java程序员面试宝典.docx
- 文档编号:30479195
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:9
- 大小:20.70KB
java程序员面试宝典.docx
《java程序员面试宝典.docx》由会员分享,可在线阅读,更多相关《java程序员面试宝典.docx(9页珍藏版)》请在冰豆网上搜索。
java程序员面试宝典
1、面向对象的特征有哪些?
封装:
封装就是隐藏对象的数据和实现细节。
把数据和相关的操作有机的结合在一起,形成一个类。
这样能够避免用户对数据的直接操作。
继承:
继承就是当前类可以派生成一个新类。
新类叫做子类,当前类叫做父类或者基类。
子类可以继承父类所有的非私有的属性和方法。
同时,子类还可以重写父类的方法。
继承能够增强代码的重用性,同时能实现多态调用。
多态:
允许不同的类对统一消息做出响应。
方法的重写。
抽象:
抽象就是忽略与目标主题无关的部分,将共有的部分抽象成一个类。
抽象分为数据抽象和过程抽象。
2、String是基本类型么?
Java中,数据的基本类型有:
byte,char,short,int,long,double,float,Boolean
占用内存小的类型可以直接转化成占用内存大的类型;
占用内存大的类型转化成占用内存小的类型需要强转;
Boolean不参基本类型之间的转换。
String和数组都是应用数据类型。
3、int和Integer的区别?
Int是基本数据类型,Integer是封装了对int类型的一些基本操作的包装类。
包装类实现了一些基本数据类型无法完成的功能。
比如说讲字符串转化成int类型。
Integer缺省值是null,int的缺省值是0;
4、String和StringBuffer的区别?
String和StringBuffer都可以存储和操作字符串。
但是String里面存储的字符串是不可变的,StringBuffer是可变的。
当String类型的连接字符串的时候,它是重新开辟了一块空间,只是将原来的只复制到这块新的空间中。
而StringBuffer不一样,当它的空间不够时,它会成倍的增长空间,这点有点像Vector,不需要舍弃当前空间另外开辟空间。
所以在对字符串进行连接操作时,StringBuffer的效率要高的多。
StringBuilder线程不安全
5、运行时异常和一般异常的异同?
运行时异常的都是继承字RuntimeException,不需要手动的抛出护着捕捉。
一般异常必须由程序员手动的捕捉或者继续往外抛出。
运行时异常是一些十分常见的在程序中很可能发生的异常,如:
下表越界,空指针等等。
6、Servlet的生命周期,说说Servlet和CGI的区别?
Servlet的生命周期主要包括三个部分:
创建:
当用户第一次发起请求的时候,通过init()方法创建Servlet;
处理请求:
通过service():
doPost()和doGet()方法处理用于的请求;
摧毁:
当服务器决定讲Servlet实例摧毁的时候,将调用destroy()方法;
Servlet和CGI不同,当多个用户发起请求的时候,Servlet引擎就会开辟多个线程处理请求,所以它的service方法可以多次被调用;而CGI对于每一次请求都单独开辟一个进程,处理完就会摧毁实例。
7、说收ArrayList,Vector和LinkedList的存储性能和特征?
LinkedList是线性的表的链式实现,增加和删除节点都十分的快速,但是查找的效率很低,需要从头结点一次往下搜寻。
ArrayList和Vector是线性表的顺序实现。
ArrayList是多线程,不安全的,空间不够是会增加原来空间的一半,效率要比Vector高,Vector是单线程,安全的,空间不够时会以成倍的空间增长。
8、EJB是基于哪些技术实现的?
说说SessionBean,EntityBean,StatefulBean和StatelesBean的区别?
9、说说Collection和Collections的区别?
Collection是集合类的上级接口,Collections是集合类的一个帮助类,有一些针对集合类的操作。
类似于数组的帮助类Arrays。
10、&和&&的区别?
&是位运算符,相同位上都为1才是1,&&是逻辑运算符,表示逻辑AND。
11、HashMap和HashTable的区别
HashTable是基于陈旧的Dictionary的类,HashMap是Map接口的一个实现。
HashTable是同步的,线程安全的;HashMap是不同步的,线程不安全的。
HashMap可以将一个null值赋给key或者value。
12、final和finally,和finalize
final是一个修饰符,修饰属性的话表示是一个常量,修饰方法的话表示这个方法不能被重写,修饰一个类的时候表示它是一个最终类,不能被继承。
finally是捕捉异常后的一个代码快,无论有无捕捉异常,都会执行。
并且在return之前执行。
、
finalize是Object类的一个方法,在java虚拟机要回收这个对象之前会调用finalize方法。
13、sleep()和wait()的区别?
Sleep()是Thread的一个方法表示当前线程进入暂停状态,将执行机会让给其他的线程,但是不会释放对象锁。
Wait()是Object的一个方法,表示当前对象释放对象锁,只有调用针对此方法的notify()方法,当前对象才能进入一个运行的状态。
14、重写和重载的区别?
重写是子类将父类的方法重新实现,必须和父类的方法同名同参同返回值,重写是多态的一种表现。
重载是指在同一个类中实现两个或多个同名不同参的方法,参数可以个数不同或者种类不同,但是重载的时候不允许出现同名同参不同返回值的情况。
15、Error和Exception的区别?
Error表示一些系统错误,比如说:
内存溢出,是比较严重的错误。
是程序员通过程序捕捉不到的。
Exception是指程序运行时可能出现出现的错误,可以通过捕捉或者继续抛出的方式处理,如果程序运行正常是不会报错的。
16、同步和异步的区别?
当一个数据在线程之间共享,而且当它在修改的时候可能被其他线程读取,这个时候就必须线程同步。
异步就是可以不按先后秩序运行,运行到一半又由其他线程去操作。
当一个方法需要执行很久,又不希望等待太久的时候就可以用异步实现。
17、抽象类和接口的区别
Java中抽象类是单继承的,但是接口实现了多继承。
抽象类中可以有非抽象方法,但是接口中的方法必须是抽象的,接口中的属性必须是publicfinal的但是抽象类可以有各种类型的属性。
18、堆和栈的区别?
堆是程序运行时,请求系统操作系统分配的内存,效率低,但是编译器不必知道要分配多大的内存,一般用来存放我的对象。
空间大。
栈是系统自动分配的,很灵活。
用来存放我们的变量和调用方法的时候使用到。
空间小。
19、redirect和forword的区别?
Redirect请求重定向:
服务器把url地址给浏览器,让浏览器自己去访问,所以请求重定向显示的是最终页面的地址;
Forward请求转发是服务器直接访问Url地址,将结果读过来再返回给浏览器。
所以浏览器不知道页面是从哪里来的,显示的仍然是中间页面的地址。
请求重定向拿不到保存在request中的值。
请求转发只能在工程里跳转,请求重定向可以连接到外网。
20、EJB和javabean的区别
21、静态内部类和实例内部类的区别?
实例内部类必须基于外部类的实现,不能单独创建,但是静态内部类可以单独创建。
此外还有匿名类的局部内部类。
局部内部类是定义在方法中的,不能使用父类非final的属性和方法。
22、动态include和静态include的区别?
动态include是用jsp的动作指令 includepage=””/>实现的; 静态include是用jsp的编译指令<%@includefile=””%>实现的; 包含时机不同: 静态导入是在编译时导入的,两个文件一起编译; 动态导入在被请求时包含的,直接将两个页面的结果合并。 生成java文件的个数不同: 静态包含只生成一个java文件; 动态导入生成两个java文件; 执行速度不同: 静态导入编译慢,执行快, 动态导入编译块,执行慢 转译过程不同: 静态导入转译成一个servlet不允许有相同变量,不允许有两个相同的变量。 23、什么时候用insert? 24、谈谈你对gc的了解? Gc是java当中的垃圾回收机制。 在java中我们不用的内存不要手动释放,java的垃圾回收机制开辟了专门的线程对我们开辟的内存进行监视,一旦该内存没有更多的引用,或者确定不再会使用时,它就回自动回收该块内存。 这样就有效的防止了内存泄漏。 而且java在回收一个对象时,会先调用它的finalize方法。 25、Java常量池 26、Math.round(x)的计算过程是先让x+0.5,再求其floor。 27、Stringstr=newString(“abc”)创建了几个对象? 创建了两个对象,一个通过””在常量池中创建,一个通过New在heap中创建。 28、线程的使用: 定义一个继承自Thread的类,重写它的run()方法,然后用start()方法启动线程。 定义一个类实现Runable接口,同样在这个类当中实现run()方法,用ThreadThread_obj=newThread(Runnableobj)的构造方法创建对象。 这样使得程序的扩展性大大加强,当程序出现问题时,只要更换相应的接口。 29、Goto是java的保留字,但是java没有使用到goto,但是在循环中,可以再循环的入口写一个标号: 通过break关键字跳出循环或者继续指定循环处的下一次循环。 30、Start()并一定会使线程立马执行,只是使当前线程进入runnable的状态,可执行的。 31、EJB中SessionBeanEntityBean的生命周期,并且说说他们是如何管理事务的? 32、应用服务器有哪些? Tomcat,Jboss,beaweblogic, 33、说说你常见的RuntimeException? NullPointerException,ArithmeticException,ArrayIndexOutofBoundsException 不需要手动的抛出或者捕捉,是一些常见的错误。 Error往往是系统错误。 34、接口可以通过extends继承接口,抽象类也可以实现接口,抽象类可以继承实体类,只要父类有明确的构造方法。 35、List和set都是继承自Collection接口,Map不是,List中有ArrayList,LinkedList,Vector等子类。 Map中有HashTable和HashMap的子类实现。 36、说出数据连接池的工作机制是什么? 37、Abstract的方法不能是static的,不能是native的,不能是synchronized的 38、数组没有length的方法,但是有这个属性,String有length()这个方法。 39、先用Iterator进行遍历,用equals()和里面的元素进行一个个比较 40、构造器可以重载,但是不可以重写,但是子类会默认的调用父类不含参的构造方法,同时还可以在子类的构造方法的第一行用super();调用父类的构造方法。 41、不可以继承String类,因为他是final类。 42、Switch(){}括号里面值可以是short,byte,char,int 同时switch中无论default在哪个位置,都会最后一个执行,如果有一个case匹配成功之后,没有break;后面的语句将全部执行,直到遇到break;或者执行结束。 Default执行后没有break,后面的语句照样会被执行。 43、无论有没有catch到异常,finally中的语句块都会被执行,而且实在return之前执行。 44、2<<3 45、对于一般的类来讲,地址相同,hashcode肯定相同,hashcode相同,地址就相同,但是,对于String和基本数据类型的包装类,只要值相同,Hashcode就相同,所以Hashcode相同,不一定地址相同。 但是equals相同,hashcode就相同。 46、Java当中呢只有值传递。 的确,我们看表象,看到的是将一个对象作为参数传进一个方法,在方法中改变它的值,该对象的值会发生改变,貌似是引用传递,事实上,这个参数的值就是这个对象的引用,不论对象的值怎么改变,对象的引用是永远不会改变的,所以java中只有值传递。 47、一个对象的synchronized方法一次只能由一个线程调用。 一旦进入synchronized方法,其他的线程是不能访问的,只有等这个方法执行结束,其他的线程才有机会访问。 但是加了synchronized并不代表要一次性把这个方法执行完毕,可以执行到一半去执行其他的方法(除了自己的其他的synchronized的方法),或者是其他对象的synchronized方法都可以,就相当于,不仅拥有了这个对象的锁,还拥有了其他对象的锁。 但是在此期间,其他的线程不能访问该对象的这个方法以及其他的所有synchronized的方法。 可以通过new多个Thread但是基于一个相同的接口对象,来给run()加synchronized使得这个方法只一次只被一个线程执行。 48、单例模式: 私有静态的属性私有的构造方法已经含有判断属性是否为null的getinstace方法 49、接口 50、Java的异常处理处理机制; 51、垃圾回收的原理和机制。 52、线程同步的方法: Wait()synchronized 建立线程的两种方法: 继承自Thread类或者实现Runnable接口。 53、Collectionmap Listsethashtablehashmap 54、JVM加载class文件的原理机制 55、Java中用unicode编码一个char占用16位可以存储一个汉字 56、多线程有两种新实现方法,分别是继承自Thread类或者实现Runnable接口。 同步的方法: synchronized,waitnotify 57、Jsp的内置对象和方法: Session Request Response Application Out Exception Config Page pageContext 58、线程的基本概念和线程的基本状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序员 面试 宝典