找工作遇到的Java疑问及答案(1)
来源:互联网 发布:淘宝怎么买盗版小说 编辑:程序博客网 时间:2024/06/06 17:29
抱歉,由于刚开始不会编辑,很多图片都没有了,可以查看word版本:http://download.csdn.net/detail/duomengwuyou/8310811
1、java异常的理解?常见的异常?
java中异常可以分为两类:error和exception。系统已经把基本的异常都写好了。【最好看书吧】
java程序中所有抛出的异常都必须从Throwable派生而来。类Throwable有两个直接子类:Error和Exception.
最常见的错误有程序进入死循环、内存泄露等。这种情况下,程序运行时本身无法解决。此时Java对应的类为Error类。Error类对象由Java虚拟机生成并抛弃。
异常是程序执行时遇到的非正常情况或意外行为。常见的错误有:代码或者调用的代码中有错误,操作系统资源不可用,数组下标越界,除数为零,无效参数。Java异常对应的类为Exception类。Java编译器要求程序必须捕获或声明所有的非运行时异常。对于运行时异常可以不做处理,也就是Runtimeexception.
2、synchronised理解
http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
如果有个类,里面的某个方法是同步方法,那么如果是该类的两个对象,那么两个对象调用这个方法就会自己执行自己的,不会受到同步的影响。但是如果两个线程执行同一个对象的该同步方法,那么就会存在同步的问题了。
那么可以通过对类加锁,这样即使是多个对象,在对该方法操作的时候仍然是同步的。或者通过定义一个静态成员,对该对象加锁,那么也可以实现同步。
Synchronized是不可以被继承的。
3、private和public的作用范围?
4、内部类 inner class
http://blog.csdn.net/ilibaba/article/details/3866537
以下假设:在类A中有内部类a和b
1、 内部类可以隐藏一些内部实现细节。比如说A中可以写方法,返回a和b的实例,而a和b都实现了某些接口,那么在外面调用的时候,都可能不知道A中的a和b具体是什么,但是仍然可以获取到对象。这样便隐藏了很多实现细节。
2、 非静态内部类对象有指向其外部类对象的引用。内部类都可以访问外部类里面的私有方法和似有变量。
3、 静态内部类:通过static修饰的类。在静态内部类里面只能访问静态的变量以及静态方法。而且也只能实例化静态的类。就当成是一种静态的方法吧,里面只能使用静态的变量。
4、 局部内部类。就是在方法里面也可以声明类。
5、 匿名内部类,就是直接newinterface(){参数和方法}
6、 类不能声明为static public static class A
所谓的静态类是指:静态类是指在一个类的内部,又定义了一个用static修饰的类。
5、java中的关键字volatile(易变的)和transient(临时)
http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html
多线程的安全性问题,之前讲过使用synchronized,也可以使用volatile。
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。这个与内存的分配相关。多线程运行的时候,每个线程运行的时候都有一个线程栈,然后所调用的变量都会从主内存中得到其副本。而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想
用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态, transient代表对象的临时数据;
6、Java的==以及equals方法?
== :若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
7、Java中Main函数的理解
http://java.chinaitlab.com/base/800752.html
http://www.cnblogs.com/xwdreamer/archive/2012/04/09/2438845.html
static修饰的静态方法,因为函数都是通过实例化对象来调用,但是我们还没来得及实例化呢,所以就要标记成为static.
Public static void main(String[] args) 必须是这种格式的 在一个类中可以调用另外一个类中的main方法。
8、泛型擦除?
1.虚拟机中没有泛型,只有普通类和普通方法
2.所有泛型类的类型参数在编译时都会被擦除
3.创建泛型对象时请指明类型,让编译器尽早的做参数检查(Effective Java,第23条:请不要在新代码中使用原生态类型)
9、Java externalizable
http://wxg6203.iteye.com/blog/642598
当对象实现了Externalizable这个接口时,就可以灵活的控制它的序列化和反序列过程,这个接口继承了java.io.Serializable
Externalizable 接口定义了两个方法,writerExternal方法在序列化时被调用,可以再该方法中控制序列化内容,readExternal方法在反序列时被调用,可以在该方法中控制反序列的内容
- 找工作遇到的Java疑问及答案(1)
- 找工作遇到的其他技术问题及解答(1)
- 找工作遇到的其他技术问题及解答(2)
- 关于Java并发编程和Web开发的疑问及搜索答案
- 最近学习java遇到的几个疑问
- 找工作中常见的PHP面试题及答案(2)
- Java面试题和答案(找工作时候用)
- Java面试题和答案(找工作时候用)-
- 找工作中遇到的问题1
- java笔试题及答案(1)
- java面试题及答案(1)
- java一些疑问的求证和遇到的问题
- iOS 面试中遇到的部分问题及简单答案(1)->(陆续更新)
- 网络编程遇到的一些问题及答案
- 15+N个顶级网上流行的Java多线程面试题及自己总结的答案(遇到即会更新)
- Java异常的面试问题及答案-Part 1
- Java异常的面试问题及答案-Part 1
- java 基础试题及答案(自己的理解)
- 支持各种尺寸的屏幕
- Kali-linux安装之后的简单设置
- directshow原理分析之filter到filter的智能连接
- 漫谈可视化Prefuse(一)---从SQL Server数据库读取数据
- myeclipse 误点 disable maven nature 后如何找到恢复maven项目按钮
- 找工作遇到的Java疑问及答案(1)
- Java 并发
- 接触iSAM库
- 关于安卓HTTP请求用HttpUrlConnection还是HttpClient好
- Spring中拦截/和拦截/*的区别
- 完全零基础开始学习iOS开发(2)
- Web系统大规模并发——电商秒杀与抢购
- Differences between hashmap and hashtable
- 漫谈可视化Prefuse(二)---一分钟学会Prefuse