2020年最新Java面试专题答案(可编辑修改word版)
- 格式:pdf
- 大小:382.55 KB
- 文档页数:23
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常2.如果你被要求写一段代码读取一个图片文件,那么一般使用哪种Stream?A. ObjectInputStreamB. FileInputStreamC. FileReaderD. DataInputStream答案:D3.每一个Oracle数据库有一个或多个物理的数据文件(data file)。
数据文件有哪个特征?A. 一个表空间(数据库存储的逻辑单元)可由一个或多个数据文件组成B. 数据文件建立后,大小可随业务需要进行调整C. 文件中的数据在需要时可以读取并存储在ORACLE内存储区中D. 一个数据文件可与多个数据库联系答案:A4.下面哪些声明是错误的?A. char c = ‘\u0000’;B. int i=’a’;C. byte b=01;D. long l=1234567890L;E. int i=0xFFFFFFFF;答案:5."类Test定义如下:public abstract class Test{public abstract void m1();public abstract void m2(){System.out.println(“hello”);}}如果对这段程序进行修改,其中不会导致错误的修改是( )A. 将修饰m1()方法的 abstract关键字删除B. 将修饰Test类的abstrac关键字删除C. 用“;”替换第4~6行D. 为m1()方法添加一个方法体答案:D6.下面对数组的操作代码哪个是正确的?A. char[] a=”hello world”.toCharArray();B. char c=a[999];C. Class cc=a.getClass();D. int len=a.length;E. a.equals(new Object());F. char c=a[0];答案:DF7.定义整型变量:int n=456;,表达式的值为5的是:A. n/10B. n%10C. (n-n/100*100)/10D. n/10%10答案:CD8.欲构造ArrayList 类的一个实例,此类继承了List 接口,下列哪个认识方法是正确的?A. ArrayList myList=new Object();B. List mylist=new ArrayList();C. ArrayList myList=new List();D. List myList=new List();答案:B9.方法中的局部变量何时分配内存答案:在方法被调用时、静态变量在类被加载时分配内存10."运行以下程序段后,变量t1的值是:public static void exchange(int x, int y) {int temp=x;x=y;y=temp;}public static void main(String args[]) {int t1=2;int t2=3;exchange(t1, t2);}A. 3B. 2C. 5D. 7答案:B11.String s1=”Hello”表达式s1==”Hello”返回true or false答案:TRUE12.如果配置一个servlet需要使用的参数,最好在哪个方法中A. doPostB. destroyC. doGetD. serviceE. init答案:AC13.关系数据库中,典型的实体关系模型有三个要素?答案:数据结构、关系操作、完整性约束14.在Weblogic中如果部署的应用访问两个数据库并需要进行事务控制时,则需配置答案:两阶段提交协议15.System同时包含三个预定义的流变量,分别是答案:In out err16.定义字符串:String str =Abcddefg”; 则str.substring(1,4).indexOf(“d”) 的结果是答案:217."下面代码中队result描述正确的是?InputStream in = … ;byte[] buff = new byte[1024];int result = in.read(buff, 0, 256)A. result 可能等于256B. result 可能等于0C. result 可能等于1024D. result 可能等于1答案:AB18.面向对象的特征答案:(抽象、继承、多态、封装)19.在oracle中,语句select ‘test’ || null from dual;的查询结果为:A. 结果是testB. 结果是testnullC. 结果是空D. 结果是NULL答案:A20.下列方法哪2 个可以用来获取用户提交的表单(Form)参数?A) HttpServletRequest. getParameter(String)B) HttpServletRequest.getAttribute(String)C) HttpServletRequest.getParameterNames()D) HttpServletRequest.getAttributeNames()答案:A,C21.下面哪一个primitive type 和对应的wrapper class 是错误的?ng.IntegerB.g ng.LongC.short ng.ShortD.void ng.V oidE.char[] ng.String答案:E22.下面哪个声明是错误?A. int i=0xFFFFFFFF;B. byte b=01;C. char c=\u0000;D. long l=1234567890LE. int i=’a’;答案:C23."转发HTTP 请求一般有两种方法,response.sendRedirect 和RequestDispatcher.forward,哪种方法可以保存request.setAttribute()中设置的值不丢BA. sendRedirectssB. forwardC. 两个都不能D. 两个都可以答案:24."下面语句片段的输出结果是什么?()int score=9;switch(score){case 0: System.out.println();default: System.out.println(“Error”);case 1: System.out.println(“Good”); break;case 2: System.out.println(“Best”);}A. ErrorB. 没有输出C. Error,Good,BestD. Error,Good答案:D25."下面的main方法执行到A时, str的值是?void main() {String str=”BEA”;This.modify(str);//A}void modify(String str) {str.replace(‘A’, ‘E’);str.toLowerCase();str+=”B”;}A. “BEEB. “BEAC. “beeBD. “bee答案:B26.释放SessionBean使用的某些资源或者刷新Entity Bean的缓存的代码一般实现在哪个方法中?A. ejbLoadB. ejbPassivateC. ejbStoreD. ejbRemoveE. ejbActivate答案:B27.在Java图形用户界面编程中,若显示一些不需要改动的文本信息,一般是使用()类的对象来实现。
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1."给出下面的不完整的方法:1)2){ success = connect() ;3)if (success == -1){4) throw new TimeOutException();5)}6)}TimeOutException 不是一个RuntimeException,下面那行可以放在 1)处?A. public void method() throws ExceptionB. public void method()C. public void method() throws TimeOutExceptionD. public void method() throw TimeOutException答案:2.合法标识符的定义"• 1. 只能以字母,下划线(_)或美元符($)开头,数字不能作为开头• 2. 不能包含美元符($)以外的特殊符号• 3. 不能包含空格• 4. 可以是中文字符或日文字符答案:13."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常4.String s1=”Hello”表达式s1==”Hello”返回true or false答案:TRUE5.将两个表连接在一起时,下面那一项通常是另外一个表的主键A. 外键B. 总控键C. 重复的组。
2020年JAVA笔试面试题库588题一、简答题1.J2EE的三层模型是什么?答案:Model View Controller2.下面哪个声明是错误?A. int i=0xFFFFFFFF;B. byte b=01;C. char c=\u0000;D. long l=1234567890LE. int i=’a’;答案:C3.1. 保证在java应用程序中,一个类Class只有一个实例存在该使用什么设计模式答案:单例4.算法的时间复杂度是指:答案:时间复杂度是度量算法执行的时间长短。
随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
5.System同时包含三个预定义的流变量,分别是答案:In out err6.关系数据库中,典型的实体关系模型有三个要素?答案:数据结构、关系操作、完整性约束7.容器Panel和applet缺省使用的布局编辑策略是答案:FlowLayout的布局管理器8."下面哪一项运行结果为true?int i = 9;int j = 9;A. ++j == i;B. j == i ++;C. j == ++ i;D. j == i;E. j++ == i;答案:BDE9.下面哪个是合法的布尔值A. “false”B. falseC. 10答案:B10."下面代码中队result描述正确的是?InputStream in = … ;byte[] buff = new byte[1024];int result = in.read(buff, 0, 256)A. result 可能等于256B. result 可能等于0C. result 可能等于1024D. result 可能等于1答案:AB11.String s1=”Hello”表达式s1==”Hello”返回true or false 答案:TRUE12."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常13.EJB在WEBLOGIC中的部署文件答案:weblogic-ejb-jar.xml14."int k=0;for(int i=5;i>0&k<10;i--){k+=i;}最后k的值是多少?答案://k=1215.面向对象的特征答案:(抽象、继承、多态、封装)16."public void test() {try {oneMethod();System.out.println(“condition 1”);} catch(ArrayIndexOutOfBoundsException e) {System.out.println(“condition 2”);} catch(Exception e) {System.out.println(“condition 3”);} finally {System.out.println(“finally”);}}在oneMethod()方法运行正常的情况下将显示什么?A.condition 2B.condition 3C.finallyD.condition 1答案:CD17.单选题:答案:18.转发HTTP请求的两个方法 respsonse.sendDirect 和 RequestDispatcher.forward 的区别答案:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
java面试题及答案(20200505185936) java 面试题及答案 做笔试面试题几乎是每个公司选拔java个人求职者的必要程序,如下是精心为你挑选的java 面试题及答案,欢迎大家踊跃阅读! java 面试题及答案 一.选择题(30分) 1.下列哪些情况可以终止当前线程的运行? a. 抛出一个异常时。 b. 当该线程调用sleep()方法时。 c. 当创建一个新线程时。(与当前进程无关) d. 当一个优先级高的线程进入就绪状态时。 2. 下面哪些为构造函数的特性定义 a. 在类中声明构造函数时,名称应该与类名相同 b. 具有重载特性,可以建立多个相同的名称 c. 使用类建立新对象时,会自动执行构造函数,因此在构造 函 数内设定变量的初值或进行内存分配 d. 以上都是 3. 关于异常处理机制的叙述哪些正确 a. catch部分捕捉到异常情况时,才会执行finally部分(无论是否有毛病,都执行) b. 当try区段的程序发生异常时,才会执行catch区段的程 序 c. 不论程序是否发生错误及捕捉到异常情况,都会执行 finally部分 d. 以上都是 4. 下列关于接口的叙述中哪些是正确的 a. 接口中的数据必须设定初值(就是接口中的常量) b. 接口中的方法都是抽象方法 c. 接口可以声明引用 d. 以上都正确 5.Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的? A. 重写是父类与子类之间多态性的一种表现。 B. 重写是一个类中多态性的一种表现。 C. 重载是一个类中多态性的一种表现。 D. 重载是父类与子类之间多态性的一种表现。 6.在Struts应用的视图中包含哪些组件? A. JSP B. Servlet C. ActionServlet D. Action E. 代表业务逻辑或业务数据的JavaBean F. EJB G. 客户化标签 7. struts框架中,关于FormBean,下列哪些说法是正确的: A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证 C 用户每次提交表单,都会产生一个新的FormBean实例 D 动态FormBean不能进行验证操作 8哪些方法可以进行servlet的调试?() A、使用打印语句;在桌面计算机上运行服务器 B、使用Apache Log4J C、使用IDE集成的调试器 D、直接查看HTML源码 E、返回错误页面给客户 9、下面关于servlet的功用说法正确的有哪些?() A、读取客户程序发送来的显式数据 B、读取客户程序发送来的隐式数据 C、生成相应的结果 D、发送显式的数据给客户程序 E、发送隐式的数据给客户程序 10、下面关于session的用法哪些是错误的?( A、HttpSession session = new HttpSession(); request.getSession(); B、String haha =(String) session.getParameter(Attribute)(“haha”); C、session.removeAttribute(“haha”); D、session. setAttribute(“haha”,值); 11、关于说法正确的有哪些?() A、URL的输出在请求时入到JSP页面中 B、不能含有影响整个页面的JSP内容 C、被包含文件改变后不需更改使用它的页面 D、被包含文件更改后,需要手动地更新使用它的页面(不需要手动更新) 12、关于bean的说法正确的有哪些?() A、具备一个零参数(空)的构造函数(不是必须的) B、不应该有公开的实例变量(字段) C、所有的属性都必须通过getXxx和setXxx方法来访问 D、布尔型的属性使用isXxx,而非getXxx 13、下面关于MVC说法错误的有哪些?() A、必须使用复杂的框架 B、使用内建的RequestDispatcher能够很好地实现MVC C、当其中一个组件发生变化的时候,MVC影响整个系统的设计 D、我们可以用MVC来处理单个请求 14、下面的标签中哪些是JSTL标签?() 15、struts框架,错误的是,下面那些说法正确? A Struts中无法完成上传功能 B Struts框架基于MVC模式 C Struts框架容易引起流程复杂、结构不清晰等问题(清晰) D Struts可以有效地降低项目的类文件数目 二、填空题( 5分) 1、调用函数MOD(123,10)返回值为___。 2、select round (123.67,1) from dual;这语句输出值为______。 3、创建一个临时替代变量使用的字符是_____。 4、若v_comm = 2800, X := NVL (V_comm,0) ,则X的值为____。 5、调用函数INSTR(‘Here you are’,’er’)返回值为___。 三、判断题(10分) 1、WHERE子句限制行记录,也可以指定限制分组结果的条件。() 2、具有UNIQUE约束的列不能包含多个空值。 () 3、DATE型数据中包含着时间值。 () 4、具有外键约束的列可以包含空值。 () 5、如果在类型为4)的列中输入“hello”,则只能存储hell。() 6、含有Group by子句的查询,其结果是排好序的。 () 7、定义游标时,其中的select语句不能使用order by子句。(子查询 不能用) () 9、触发器一定会被激发。、过程可以有返回值。 () 10、instead of触发器只是基于视图的。 四、写出相应的SQL语句(括号内为列名)(10分) 1、查询从事各工作(JOB)的员工人数。 2、查询与员工SMITH在同一部门(DEPTNO)的员工的姓名(ENAME),工资(SAL)和部门。 3、查询所有员工的姓名(ENAME),工资(SAL)和工资等级(GRADE)。 4、查询获得工资(SAL)最高的3个员工信息。 5、查询所有员工的姓名(ENAME)及其主管姓名(ENAME)。 五、简答题(15分) 1. 在PL/SQL程序中,进行用户自定义异常处理的3个步骤是 什么? 2. 面向对象的特征有哪些方面?并简要介绍 3. List、Map、Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。 4 .struts1.0和struts2.0的区别?如何控制两种框架中的单例模式? 5. 描述一下如何在struts1.0实现国际化,以两国语言(中文,英文)为例: 6.struts中怎么配置form-bean、action 7. Hibernate自带的分页机制是什么?如果不使用Hibernate 自带的分页,则采用什么方式分页? 8. hibernate中一对多配置文件返回的是什么? 9.什么样的数据适合存放到第二级缓存中? 10你一般用spring做什么? 11项目中如何体现Spring中的切面编程,具体说明。 12 触发触发器的数据操作有哪些? 13 解释视图的含义以及使用视图的好处。 14 简述ORACLE中5种约束及其作用。 15 ORACLE中过程和函数的异同点。 六、编程题(30分) 1、创建一个PL/SQL块,根据用户输入的编号,在emp表中查询出该编号的员工姓名、部门号及其主管编号,要有异常处理。 2、创建一个PL/SQL块,根据用户输入的工作,从emp表中逐条输出从事这一工作的每位员工的编号、姓名和受雇如期,每条信息格式如下:(用游标实现) 编号姓名受雇日期 7751 JOHN 95-12-31 3、编写一个函数,用于判断EMP表中某一工作(JOB)是否存在,若EMP表存在此工作名称,则返回TRUE,否则返回FALSE。 4、编写一触发器,在EMP表执行插入或修改前被激发,此触 发器将对员工的工资(SAL)超过5000进行报错,不能插入或修改,不超 过5000的才将员工编号、工作及当时的日期(SYSDATE)插入UP_EMP表 ,SAL (注:此表已建好,表结构为UP_EMP(EMPNO NUMBER(4) NUMBER(7,2),UDETE DATE)) 5下面程序的输出结果是多少? importjava.util.Date; public class Test extends Date{ public static void main(String[] args) { new Test().test();} public void test(){ System.out.println(super.getClass().getName());}} 6下面的程序代码输出的结果是多少? public class smallT {} public static void main(String args[]) { } public int get() { } try { } finally { } return 2 ; return 1 ; smallT t = new smallT(); int b = t.get(); System.out.println(b); 7子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 8去掉一个Vector集合中重复的元素 9有一个字符串,其中包含中文字符、英文字符和数字字符, 请统计和打印出各个字符的个数 10. xxx公司的sql面试
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常2."假设test类运行于多线程环境下,那么关于A处的同步下面描述正确的是?public class Test {List list = new java.util.ArrayList();public void test() {synchronized(list) { // --Alist.add( String.valueOf(System.currentTimeMillis()));}}}A. Test 类为singleton时也没有必要增加synchronizedB. Test方法中必须增加synchronizedC. Test类为singleton时有必要增加synchronizedD. Test 方法中没有必要增加synchronized答案:C3."类Test定义如下:public abstract class Test{public abstract void m1();public abstract void m2(){System.out.println(“hello”);}}如果对这段程序进行修改,其中不会导致错误的修改是( )A. 将修饰m1()方法的 abstract关键字删除B. 将修饰Test类的abstrac关键字删除C. 用“;”替换第4~6行。
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1."给出下面的不完整的方法:1)2){ success = connect() ;3)if (success == -1){4) throw new TimeOutException();5)}6)}TimeOutException 不是一个RuntimeException,下面那行可以放在 1)处?A. public void method() throws ExceptionB. public void method()C. public void method() throws TimeOutExceptionD. public void method() throw TimeOutException答案:2.合法标识符的定义"• 1. 只能以字母,下划线(_)或美元符($)开头,数字不能作为开头• 2. 不能包含美元符($)以外的特殊符号• 3. 不能包含空格• 4. 可以是中文字符或日文字符答案:13."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常4.EJB2.0 中定义了几种Enterprise Bean答案:Session bean, entity bean, message driven bean5.下面哪个是合法的布尔值A. “false”B. falseC. 10答案:B6.在Weblogic中如果部署的应用访问两个数据库并需要进行事务控制时,则需配置答案:两阶段提交协议7.System同时包含三个预定义的流变量,分别是答案:In out err8.如果你被要求写一段代码读取一个序列化的对象,那么一般使用哪种Stream?A. FileInputStreamB. FileReadeC. DataInputStreamD. ObjectInputStream答案:D9.对于大多数J2EE Constainer来说,web应用最终可以用哪种形式部署?A. jarB. earC. warD. 直接以目录形式答案:BCD10."类Test定义如下:public abstract class Test{public abstract void m1();public abstract void m2(){System.out.println(“hello”);}}如果对这段程序进行修改,其中不会导致错误的修改是( )A. 将修饰m1()方法的 abstract关键字删除B. 将修饰Test类的abstrac关键字删除C. 用“;”替换第4~6行D. 为m1()方法添加一个方法体答案:D11.在java中判断applet的来源的方法有?A. getCodeBase();B. getDocumentBase();C. getCodebase();D. getDocumentbase();答案:AB12.一个正在执行的线程在遇到下列()情况时会暂时停止执行?A. 执行suspend被挂起;B. 休眠;C. 执行输入输出操作D. 执行wait()方法。
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1.关于MVC,下面说法正确的是:A. Servlet实现MVC的Model部分B. JSP实现MVC的Control部分C. EJB实现MVC的Model部分D. HTTP实现MVC的View部分答案:C2.一个正在执行的线程在遇到下列()情况时会暂时停止执行?A. 执行suspend被挂起;B. 休眠;C. 执行输入输出操作D. 执行wait()方法。
答案:ABD3.多选题:答案:4."下面语句输出的结果是什么?int score = 9;switch (score){case 0:System.out.println();default: System.out.println(""Error"");case 3: System.out.println(""Good"");break;case 2: System.out.println(""Best"");}A. Error Good BestB. Error goodC. ErrorD. 没有任何输出答案:B5.构造ArrayList类的一个实例,下列哪个方法是正确的?A. List myList = new ArrayList();B. ArrayList myList = new List();C. List myList = new List();D. ArrayList myList = new Object();答案:A6.下面哪些接口的声明是错误的?A. interface MyInterface extends Youninterface{}B. private interface MyInterface{}C. interface MyInterface extends Youninterface1, Youninterface2{}D. interface MyInterface implements MyInterface{}E. interface MyInterface{}答案:C7.下面哪个Map是排序的?A. HashtableB. TreeMapC. HashMapD. WeakHashMapE. LinkedHashMap答案:E8.不同级别的用户对同一对象拥有不同的访问权限或某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动,这种情况最好使用什么模式?A. Fasade模式B. Bridge模式C. Adapter模式D. Proxy模式答案:D9."给出下面一段程序:class Aclass{void go(){System.out.println(Aclass”);}}public class Bclass extends Aclass{void go(){System.out.println(“Bclass”);}public static void main (String args[]){Aclass a = new Aclass();Aclass a1 = new Bclass();a.go();a1.go();}}以上程序运行的结果是:A. Aclass BclassB. Bclass AclassC. Aclass AclassD. Bclass Bclass答案:A10.算法的时间复杂度是指:答案:时间复杂度是度量算法执行的时间长短。
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1.单选题答案:2."int k=0;for(int i=5;i>0&k<10;i--){k+=i;}最后k的值是多少?答案://k=123."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常4.String s1=”Hello”表达式s1==”Hello”返回true or false答案:TRUE5.下面哪个是合法的布尔值A. “false”B. falseC. 10答案:B6.转发HTTP请求的两个方法 respsonse.sendDirect 和 RequestDispatcher.forward 的区别答案:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用。
2020年JAVA笔试面试题库588题 一、简答题 1.EJB2.0 中定义了几种Enterprise Bean 答案:Session bean, entity bean, message driven bean
2.每一个Oracle数据库有一个或多个物理的数据文件(data file)。数据文件有哪个特征:A. 文件中的数据在需要时可以读取并存储在Oracle内存储区中。 B. 数据文件建立后,大小可随实际业务需要进行调整 C. 一个表空间(数据存储的逻辑单元)可由一个或多个数据文件组成。 答案:AC
3."下面代码中队result描述正确的是? InputStream in = … ; byte[] buff = new byte[1024]; int result = in.read(buff, 0, 256) A. result 可能等于256 B. result 可能等于0 C. result 可能等于1024 D. result 可能等于1 答案:AB
4.单选题 答案:
5.算法的时间复杂度是指: 答案:时间复杂度是度量算法执行的时间长短。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
6.System同时包含三个预定义的流变量, 分别是 答案:In out err
7.关系数据库中,典型的实体关系模型有三个要素? 答案:数据结构、关系操作、完整性约束
8."执行下列代码后,哪个结论是正确的? String[] s = new String[10]; A. s.length为10 B. s[9]为null C. s[10]为”D. s[9]为0 答案:AB
9.转发HTTP请求的两个方法 respsonse.sendDirect 和 RequestDispatcher.forward 的区别 答案:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 HttpServletResponse.sendRequest()方法。
1.JDK 和JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。
具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。
简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。
2.== 和equals 的区别是什么?== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而equals 默认情况下是引用比较,只是很多类重新了equals 方法,比如String、Integer 等把它变成了值比较,所以一般情况下equals 比较的是值是否相等。
3.两个对象的hashCode() 相同,则equals() 也一定为true,对吗?不对,两个对象的hashCode() 相同,equals() 不一定true。
4.final 在Java 中有什么作用?final 修饰的类叫最终类,该类不能被继承。
final 修饰的方法不能被重写。
final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
5.Java 中的Math. round(-1. 5) 等于多少?等于-1。
round()是四舍五入,注意负数5是舍的,例如:Math.round(1.5)值是2,Math.round(-1.5)值是-1。
6.String 属于基础的数据类型吗?String 不属于基础类型,基础类型有8 种:byte、boolean、char、short、int、float、long、double,而String 属于对象。
7.Java 中操作字符串都有哪些类?它们之间有什么区别?操作字符串的类有:String、StringBuffer、StringBuilder。
String 声明的是不可变的对象,每次操作都会生成新的String 对象,然后将指针指向新的String 对象StringBuffer由于很多方法都被synchronized 修饰了所以线程安全,但是当多线程访问时,加锁和释放锁的过程很平凡,所以效率相比StringBuilder要低。
StringBuilder相反执行效率高,但是线程不安全。
8.String str="i"与String str=new String(“i”)一样吗?不一样,因为内存的分配方式不一样。
String str=“i"的方式,Java 虚拟机会将其分配到常量池中,如果常量池中有"i”,就返回"i"的地址,如果没有就创建"i",然后返回"i"的地址;而String str=new String(“i”) 则会被分到堆内存中新开辟一块空间。
9.如何将字符串反转?使用StringBuilder 或者stringBuffer 的reverse() 方法10.String 类的常用方法都有那些?indexOf charAt replace toLowerCase toUpperCase substring equals trim split getBytes length11.抽象类必须要有抽象方法吗?不需要,抽象类不一定非要有抽象方法;但是包含一个抽象方法的类一定是抽象类。
12.普通类和抽象类有哪些区别?普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类是不能被实例化的,就是不能用new调出构造方法创建对象,普通类可以直接实例化。
如果一个类继承于抽象类,则该子类必须实现父类的抽象方法。
如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。
13.抽象类能使用final 修饰吗?不能,定义抽象类就是让其他类继承的,如果定义为final 该类就不能被继承,这样彼此就会产生矛盾,所以final 不能修饰抽象类14.接口和抽象类有什么区别?实现:抽象类的子类使用extends 来继承;接口必须使用implements 来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。
访问修饰符:接口中的方法默认使用public 修饰;抽象类中的抽象方法可以使用Public和Protected修饰,如果抽象方法修饰符为Private,则报错:The abstract method 方法名in type Test can only set a visibility modifier, one of public or protected。
15.Java 中IO 流分为几种?按功能来分:输入流(input)、输出流(output)。
按类型来分:字节流和字符流。
字节流和字符流的区别是:字节流按8 位传输以字节为单位输入输出数据,字符流按16 位传输以字符为单位输入输出数据。
16.BIO、NIO、AIO 有什么区别?BIO:Block IO 同步阻塞式IO,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO 同步非阻塞IO,是传统IO 的升级,客户端和服务器端通过Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是NIO 的升级,也叫NIO2,实现了异步非堵塞IO ,异步IO 的操作基于事件和回调机制。
17.Files的常用方法都有哪些?Files. exists():检测文件路径是否存在Files. createFile():创建文件。
Files. createDirectory():创建文件夹。
Files. delete():删除一个文件或目录Files. copy():复制文件Files. move():移动文件。
Files. size():查看文件个数Files. read():读取文件Files. write():写入文件18.Java 容器都有哪些Java 容器分为Collection 和Map 两大类,其下又有很多子类Collection List ArrayList LinkedList Vector Stack Set HashSet LinkedHashSet TreeSetMap HashMap LinkedHashMap TreeMap ConcurrentHashMap Hashtable19.Collection 和Collections 有什么区别?Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如List、Set 等Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法:Collections. sort(list)20.List、Set、Map 之间的区别是什么21. HashMap 和Hashtable 有什么区别?HashMap 是非线程安全的Hashtable 线程安全HashMap对象的key、value值均可为null ,HahTable对象的key、value值均不可为null。
22.如何决定使用HashMap 还是TreeMap?对于在Map 中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言HashMap 的插入会更快,但如果你要对一个key 集合进行有序的遍历,那TreeMap 是更好的选择23.说一下HashMap 的实现原理?(数组+链表、红黑树)HashMap 基于Hash 算法实现的,我们通过put(key,value)存储,get(key)来获取。
当传入key 时,HashMap 会根据key. hashCode() 计算出hash 值,根据hash 值将value 保存在bucket 里。
当计算出的hash 值相同时,我们称之为hash 冲突,HashMap 的做法是用链表和红黑树存储相同hash 值的value。
当hash 冲突的个数比较少时,使用链表否则使用红黑树。
24.说一下HashSet 的实现原理?HashSet 是基于HashMap 实现的,HashSet 底层使用HashMap 来保存所有元素,因此HashSet 的实现比较简单,相关HashSet 的操作,基本上都是直接调用底层HashMap 的相关方法来完成,HashSet 不允许重复的值。
25.ArrayList 和LinkedList 的区别是什么?ArrayList 是动态数组的数据结构实现,而LinkedList 是双向链表的数据结构实现频繁读取集合中的元素时,更推荐使用ArrayList,而在插入和删除操作较多时,更推荐使用LinkedList26.如何实现数组和List 之间的转换?数组转List:使用Arrays. asList(array) 进行转换。
List 转数组:使用List 自带的toArray() 方法。
27.ArrayList 和Vector 的区别是什么?线程安全:Vector 使用了Synchronized 来实现线程同步,是线程安全的,而ArrayList 是非线程安全的。
性能:ArrayList 在性能方面要优于Vector。
扩容:ArrayList 和Vector 都会根据实际的需要动态的调整容量,只不过在Vector 扩容每次会增加 1 倍,而ArrayList 只会增加50%。
28.Array 和ArrayList 有何区别?Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。
Array 是指定固定大小的,而ArrayList 大小是自动扩展的。
Array 内置方法没有ArrayList 多,比如addAll、removeAll、iteration 等方法只有ArrayList 有。
29.在Queue 中poll()和remove()有什么区别?相同点:都是返回第一个元素,并在队列中删除返回的对象。
不同点:如果没有元素remove()会直接抛出NoSuchElementException 异常,而poll()会返回null。
30.哪些集合类是线程安全的?Vector、Hashtable、Stack 都是线程安全的,而像HashMap 则是非线程安全的,不过在JDK 1.5 之后随着Java. util. concurrent 并发包的出现,它们也有了自己对应的线程安全类,比如HashMap 对应的线程安全类就是ConcurrentHashMap。