如果你是一个 Java 面试官,你会问哪些问题?

Python023

如果你是一个 Java 面试官,你会问哪些问题?,第1张

1、谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?考点分析:对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,包括泛型、Lambda 等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全等基础类库。对于我们日常工作应用较多的类库,面试前可以系统化总结一下,有助于临场发挥。2、对比Hashtable、HashMap、TreeMap有什么不同?考点分析:上面的回答,只是对一些基本特征的简单总结,针对Map相关可以扩展的问题很多,从各种数据结构、典型应用场景,到程序设计实现的技术考量,尤其是在Java 8里,HashMap本身发生了非常大的变化,这些都是经常考察的方面。很多朋友向我反馈,面试官似乎钟爱考察HashMap的设计和实现细节,所以今天我会增加相应的源码解读,主要专注于下面几个方面:理解Map相关类似整体结构,尤其是有序数据结构的一些要点。从源码去分析HashMap的设计和实现要点,理解容量、负载因子等,为什么需要这些参数,如何影响Map的性能,实践中如何取舍等。理解树化改造的相关原理和改进原因。除了典型的代码分析,还有一些有意思的并发相关问题也经常会被提到,如HashMap在并发环境可能出现无限循环占用CPU、size不准确等诡异的问题。我认为这是一种典型的使用错误,因为HashMap明确声明不是线程安全的数据结构,如果忽略这一点,简单用在多线程场景里,难免会出现问题。理解导致这种错误的原因,也是深入理解并发程序运行的好办法。对于具体发生了什么,你可以参考这篇很久以前的分析,里面甚至提供了示意图,我就不再重复别人写好的内容了。3、Java 提供了哪些 IO 方式? NIO 如何实现多路复用?考点分析:在实际面试中,从传统 IO 到 NIO、NIO 2,其中有很多地方可以扩展开来,考察点涉及方方面面,比如:基础 API 功能与设计, InputStream/

与工作相关的问题,最容易拿分 

问的是和工作切身相关的问题,比如:更细节的工作内容、适任所要具备的条件、必须达成的目标、主管的管理风格、公司的特别期待等。

这类问题不只是切题而已,还加强了面试官对你的以下印象:“你很想进这家公司做这份工作,所以想要进一步了解各项与工作相关的细节,这也表示你在进了公司之后会有热情做好这份工作。”这样的提问,最能发挥临门一脚的关键力量。

一样的,在提问题时,别忘了适切地带入自己积极争取进公司的企图心,比如:

• “我很想争取进贵公司,所以想更清楚公司对这份工作的期待与目标。”

• “这个职务是我一直以来很想做的理想工作,所以我想多了解,还有没有哪些条件是我要先具备的?”

面试时,不是口若悬河、自吹自擂的人才会出线,而是有准备的人会拿到入场券,所以重点在于事先要做好充分的准备,除了答题外,也要准备出题。提问题有两个诀窍,第一个是问的问题要对,第二个是问的方式要对,搞定这两件事,提问题这十分钟就可以轻易拿分。

初级java工程师多数是刚毕业或者工作1,2年的新人。对于新人,面试中基础问题会问道很多,因为先要考察这个人的基础。

关于基础类的题目,我在面试初级java工程师的时候一般会问下面两大类问题,每类5个题目,这样下来我就基本可以了解这位工程师的程度了。

java基础类

面向对象基础类

java基础类

1.描述一下java的访问修饰符,和它们之间的区别?

回答:如果可以回到出public,private,protected,就算是ok;回答出default的,加分

2. int和Integer 区别?

回答:如果回答出Integer是int的包装类,就算ok;回答出其他的基本类型和它们相应的包装类,加分。

3.如何定义一个单精度浮点类型的变量?

回答:float 变量名=1.2f ;回答出不加最后的f为双精度浮点类型,加分

4. equals和==的区别?

回答: equals是值比较(一般处理java开发都会这么说,算是ok的)而==是引用比较(或者对象比较);回答equals是可以自定义的,加分

5.将一个数组作为参数传递到一个方法中,在方法中,数组内的元素值被改变了,那么在方法外部,这个数组内的元素是否也被改编了?

回答:是,因为java方法中传递的是引用,就ok。如果回答中,将引用说明了自己的理解,加分。

面向对象基础类

1.重载和重写的区别?

回答:这个看个人理解,理解没有什么大的偏差就ok;回答出多态相关的,加分。

2.构造方法能不能重载?

回答:可以重载,ok;回答构造方法时不能继承的,所以如果要调用指定父类构造器就必须重写子类构造方法,加分。

3.抽象方法(abstract)是否可以被final、static、native修饰?

回答:都不可以,因为抽象方法是必须子类实现的,final方法时不可以被重写的,static是父类必须实现的方法,native是本地语言实现的方法。回答出封装和继承相关的,加分

4.当父类引用指向子类对象的时候,子类重写了父类方法和属性,那么当访问属性的时候,访问是谁的属性?调用方法时,调用的是谁的方法?

回答:访问的是父类的属性,调用的是子类的方法,ok;如果可以画图解释的话,加分

5.抽象类和接口有什么异同?

回答:一些类定义上的区别,ok;回答在应用过程中,如何根据业务定义接口,加很多分

最后,如果前面问题回答的不错,会补充两个编程习惯问题。

1.在你写过的代码中,你写过超过2层的循环吗,怎么实现的?

回答:没有,就算ok;如果回答有,听一下实现,如果原因说不出来,扣分。

2.在你写过的代码中,if语句最多嵌套了几层,最多有多少分支,怎么实现的?

回答:3层以下,就算ok;如果回答3层以上,听一下实现,如果原因说不出来,扣分。

4,5个分支,就算ok;如果回答5个分支以上,听一下实现,如果原因说不出来,扣分。

最后两个题其实比较陷阱,但是正是一个反向的思考才能了解面试者之前的工作状态。

如果面试者在平日里就有好的习惯,自然不用担心。