擅长领域:execl、word、ppt 等

今日重点:

①  掌握面试的基本素质;

②  学会7个典型的java面试问题。

有问题的小伙伴欢迎加我主页vx。评论、点赞、收藏是对我最大的支持!!!

目录

一、面试的目的

二、面试的要点

三、为什么要考察Java?

四、面试真题集锦

面试例题1:Java基本类型的类型转换有几种方式,你能简单阐述一下吗?

面试例题2:关于异常处理机制,你能简单阐述一下吗?

面试例题3:异常处理的关键语句是什么样的?

面试例题4:Java有哪三大语言特性? 你能说下对多态的理解吗?

面试例题5:简单说下Java的反射机制,能举例说下其应用吗?

面试例题6:类的初始化过程是怎样的?

面试例题7:你需要存储元素到某种数据结构中,而且要确保元素在自然队列中没有重复,下面哪个接口能保证这种能力?


一、面试的目的

面试,对于公司来说,是公司考察候选人各项能力的选拔性约谈;对于候选人来说,是展现自己各方面能力素质的最佳机会。

所以对于双方来看,都是一场浓缩程度极高的“对决”。

面试官问出的每一个问题,都有着背后的意图,考察你某方面的能力。候选人的回答,也是“秀肌肉”的时刻,要体现出自己的各种能力素养。

那么,面试要注意哪些要点呢?

二、面试的要点

1、充分的知识准备

针对所申请的职位,列出相关的知识点,能够在面试中做到举一反三,最好将知识点彻底吃透,不仅能够流畅的进行描述,还可以有自己的理解。这里主要考察知识点的广度。

2、明确面试官的问题

针对面试官的问题,要仔细审题,确保回答的方向的准确,不能只捕捉关键字,否则容易答非所问。

3、问题的拓展

同样针对面试官的问题,在回答问题的时候,增加一些相关知识的拓展,适当的展示自己,会赢得面试官的好感。这就需要知识点的深度和广度达到了才能做到。

4、着装及礼貌

着装和礼貌一定程度透露一个人的素质,干净简洁的着装和基本的礼貌给人尊重和对这份工作的重视,这对面试官来说是加分项。这里主要是对面试者的个人素质考察。

三、为什么要考察Java?

作为稳居编程语言排行榜前三的Java语言,具有非常多的优秀特性,同时拥有庞大的类库生态和大量的开发者。

Java语言在大数据生态体系中地位也是无可撼动,目前流行的大数据生态组件,很多都是用Java语言或基于JVM的语言(如Scala)开发的。

因此,要想玩转大数据,或多或少需要对Java有所了解。

对于一个初级岗求职者或者应届毕业生来说,公司除了对项目经验有所问询之外,最好的考察办法就是检查基本功,包括编程风格,以及程序结构,数据类型,赋值语句,类型转换,运算符,异常处理等程序设计基本概念的理解。

因此面试之前,一定要对自己所掌握的基本概念知识较为熟悉,尤其是对各种细致的考点要加以重视。

Java程序设计基本概念考察中,对类型转换和异常处理的考察最为常见,有以下原因:

1、在Java程序中,不同的基本类型的值经常需要进行互相转换,实际工作中因为对它们的掌握不够熟练写出错误代码的情况经常发生。

2、异常处理机制在实际工作中会经常被用来实现将程序的异常处理代码和正常业务代码分离,异常处理代码的错误要么高调抛出以让开发者定位处理或低调捕获从而不影响代码的正常执行,从而提高程序的健壮性,现在异常机制已经成为判断一门编程语言是否成熟的标准。

四、面试真题集锦

面试例题1:Java基本类型的类型转换有几种方式,你能简单阐述一下吗?

解析:有两种类型转换方式:自动类型转换和强制类型转换,低级数据类型到高级数据类型的转换称为自动类型转换,高级数据类型到低级数据类型的转换称为强制类型转换。

这些类型由低级到高级分别为(byte,short,char)-->int-->long-->float-->double

以上回答基本就是这道考题的标准答案,不过如果你能就此考题回答出更为展现你基本功底的以下扩展知识点和举出具体示例,将会给面试大大加分。

回答话术:

基本类型的转换首先要分为简单数据类型之间的转换和其他数据类型到字符串的转换。

1、简单数据类型之间的转换可以分为:低级到高级的自动类型转换、高级到低级的强制类型转换、通过包装类过渡类型进行转换。

(1)自动类型转换示例:

char c = 'c';int i = c;System.out.println("output:" + i);
输出:output:99

(2)强制类型转换示例:

double dl = 3.14;int i = (int)dl;//这种转换可能会导致溢出或精度的下降

(3)包装类过渡类型转换示例:

float f1 = 100.00f;Float F1 = new Float(f1);//根据Java的自动装箱拆箱机制,也可直接写成Float F1=f1;Double d1 = F1.doubleValue();

2、其他数据类型转化为字符串,一般通过toString()方法;Character、Integer、Float、Double、Boolean、Short等类的toString方法用于将字符、整数、浮点数、双精度数、逻辑数、短整形等类型转化为字符串。

int i1 = 10;Integer I1 = new Integer(i1);//也可直接写成Integer I1 =i1;String s = I1.toString();

面试例题2:关于异常处理机制,你能简单阐述一下吗?

解析:在Java程序运行时,常常会出现一些非正常的现象,根据其性质可分为错误和异常。一般来说,最常见的错误有程序进入死循环、内存泄漏等。这种情况下,程序运行时本身无法解决。Java错误对应的类为Error类。通常Java程序不对这类错误进行处理。

回答话术:异常是程序执行时遇到的可避免的程序错误,常见的有数组下标越界,算法溢出(超出数值表达范围)、除数为零、无效参数等。这种情况程序运行时本身可以解决,Java异常对应的类为Exception类。它有各种不同的子类分别对应于不同类型的异常。通常异常有两种处理方式,一种是通过catch捕获,一种是通过throws声明异常。

PS:实际公司面试中,若之前有笔试,很可能会针对异常处理出一道针对具体异常类型的代码考题。所以面试者还是需要对异常处理的不同场景的具体运用有所研究和准备才行,建议在认真学习了异常处理机制的理论知识前提下,多找找相关笔试题刷刷。

面试例题3:异常处理的关键语句是什么样的?

Java异常处理的关键语句有五个:try、catch、throw、throws、finally。

1、抛出异常并进行捕获的完整语句格式如下,当然也允许try...catch或try...finally这两种写法。

try{      //throw Exception throw语句抛出明确的异常     }  catch{     //find Exception     //hand of it     }finally{  //must be run}

try、catch、finally三个语句块可能会涉及以下考题

1)try、catch、finally可以单独使用吗? 不可以,只能组成以上所述三种语句格式。

2)try中定义的变量catch和finally能够访问吗?不能,三个代码块中变量的作用域为代码块内部,分别独立而不能互相访问,如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

3)如有多个catch能够捕获所抛出异常,那多个catch块的代码都会被执行吗?不会,只会执行第一个匹配上的catch块代码。

4)finally语句块的代码一定会被执行吗?会,无论异常是否发生,finally都会被执行。

2、如果一个方法想抛出异常但自身不进行处理,交给上层处理,它就必须标记这种行为,以使方法的调用者能够正常运行程序,无需处理异常。要做到这点,我们可以在方法声明中包含一个throws子句。一个throws子句列举了一个方法可能引发的所有异常类型。

PS:Java编译器会要求方法必须声明抛出可能发生的未被捕获的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。由程序错误导致的异常属于运行时异常(RuntimeException);而程序本身没有问题,但由于像I/O错误这类异常导致的异常属于其他异常。程序本身的问题,也就是抛出的运行时异常最好是就地解决。

public void info() throws Exception{   //body of method}//Exception 是该方法可能引发的所有的异常,也可以是异常列表,中间以逗号隔开。

3、语言特性考察

通过以上基本概念的考察,如果能够应对如上,那么面试官对你的程序设计基本功底应该是比较认可的。接下来就会加大难度,考察你对Java语言特性的掌握深度,以下考题别看耳熟能详,却很能见功底,面试者完全可以侃侃而谈一番,但如果说了半天还是没能准确道出实质的话,那么,就会给面试官留下知识的探索不够深入的印象。

此类考题重点包括:Java语言的三个特性,继承、封装、多态;反射机制;类的初始化过程。

面试例题4:Java有哪三大语言特性? 你能说下对多态的理解吗?

解析:面试官首先会问Java的三大语言特性是啥,通常情况下,这个问题90%多的人肯定都能答上来,所以考察的重点在于面试者答上来以后,再让说说对这三个特性的理解或者某一个特性的理解。通常情况下,对多态的考察更为常见,当然,面试者也要做好回答另两大特性的准备。

回答话术:Java的三大语言特性是继承、封装和多态。多态可以简单地概括为“一个接口,多种方法”。在程序运行的过程中才决定调用哪个函数。通常,继承可以扩展已存在的代码模块(类),它们的目的都是为了代码重用。而多态则是为了实现另一个目的--接口重用。实际工作中,重用接口比重用代码使用得更为普遍。

面试例题5:简单说下Java的反射机制,能举例说下其应用吗?

解析:Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。反射被广泛地用于那些需要在运行时检测或修改程序行为的程序中。尽管反射非常强大,但也不能滥用。如果一个功能可以不用反射完成,那么最好就不用。在我们使用反射技术时,下面几条内容应该牢记于心:

1.性能第一 

反射包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射。

2.安全限制

使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如Applet,那么这就是个问题了。

3.内部暴露

由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用--破坏了抽象性,降低了可移植性。

Java反射机制的应用场景,比如:

(1)工厂模式:Factory类中用反射的话,添加了一个新的类之后,就不需要再修改工厂类Factory了。

(2)数据库JDBC中通过Class.forName(Driver)来获得数据库连接驱动。

(3)分析类文件:能得到类中的方法等等。

(4)访问一些不能访问的变量或属性:破解别人代码。

面试例题6:类的初始化过程是怎样的?

解析:JVM初始化一个类包含如下几个步骤:

1.假如这个类还没有被加载和连接,则程序先加载并连接该类。

2.假如该类的直接父类还没有被初始化,则先初始化其直接父类。

3.假如类中有初始化语句,则系统依次执行这些初始化语句。

在执行第2步时,系统对直接父类的初始化步骤也遵循此步骤1~3,如果该直接父类又有直接父类,则系统再次重复这三个步骤来先初始化这个父类......所以JVM最先初始化的总是java.lang.Object类。当程序主动使用任何一个类时,系统会保证该类以及所有父类(包括直接父类和间接父类)都会被初始化。

实际操作考察

如果通过了对语言特性的考察,那么,接下来就要面对实际动手能力方面的考察了。

这个方面的知识点通常都是以一个非常具体的随机性的题目呈现,考题范围重点包括字符串的处理、日期函数的运用、正则表达式的运用、Java的集合。

面试例题7:你需要存储元素到某种数据结构中,而且要确保元素在自然队列中没有重复,下面哪个接口能保证这种能力?

A.  java.util.Map

B.  java.util.List

C.  java.util.Collection

D.  java.util.Set

解析:要想正确回答这个问题,面试者需要对Java集合有一个清晰的脉络。

Java容器类库一共有两种主要类型:Collection和Map。它们之间的区别在于容器内每个“槽”所存储的元素个数不同,Collection每个槽内只能存储一个元素,而Map类型中,每个槽内存储key-value关联。Java容器类都可以自动调整自己的尺寸。

各自旗下的子类关系如下:

Collection的子类:① --List:以特定次序存储元素,取出来的顺序可能和放入的顺序不同    |--ArrayList:擅长随机访问元素,但在List中进行插入、删除和移动元素较慢    |--LinkedList:插入、删除、移动元素方便,但随机访问元素差② --Set:每个值只能保存一个对象,不能包含重复的元素    |--HashSet:使用散列函数    |--TreeSet:使用红黑树    |--LinkedHashSet:使用链表结合散列函数③ --Queue:先进先出的容器
Map的子类:① --HashMap:使用散列函数② --HashTable:使用散列函数③ --TreeMap:使用红黑树

故答案选D。

对每个容器子类的特性上图已做简单说明,但如果要应对面试官的继续追问,考察更为细节性的知识点,那么,面试者最好要对每个子类的特性有一个更全面更深入的学习和总结,一般实际动手操作过的面试者对此类问题的认识会更为深刻。比如,以前经常会被问到的考题,请说明HashMap和HashTable的区别。不能说出个两三点,那是很难让面试官满意的,因为如果你实际操作过,通常会有很深的体会和印象。

(PS:现在由于HashTable的概念基本完全淡化了,该问题应该会很少再被问到了,举此案例是为了说明面试官会出类似题型来进行深入考察面试者动实际操作情况,面试者需要深入学习总结。)

希望大家都能顺利通过面试!!!

求点赞、求评论、求收藏

万字长文丨7个经典问题,助你拿下Java面试(建议收藏)相关推荐

  1. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...

    对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...

  2. 【万字长文】这40个Python可视化图表案例,强烈建议收藏!

    数据可视化是数据科学中关键的一步. 在以图形方式表现某些数据时,Python能够提供很大的帮助. 不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题! 今天给大 ...

  3. 万字长文丨1分36秒,100亿,支付宝技术双11答卷:没有不可能

    2019年双11来了.1分36秒100亿,5分25秒超过300亿,12分49秒超500亿--如果没有双11,中国的互联网技术要发展到今天的水平,或许要再多花20年. 从双11诞生至今的11年里,有一个 ...

  4. (建议收藏)万字长文,帮你一招搞定产品经理面试-详解产品经理面试大全

    ​ 前言 产品经理这个岗位由于其特殊性,在面试当中往往不能够以技术性的题目来衡量,也因其涉猎的范围广泛,所以在准备面试时必须面面俱到,才能够胸有成竹. 博主从个人方面.公司方面.项目方面.产品基础知识 ...

  5. 2w+字长文,一篇文章扫盲Python、NumPy 和 Pandas,建议收藏!

    作为简单易学的编程语言,想要入门还是比较容易的,今天我们来一篇超级长文,一次性扫盲Python.NumPy 和 Pandas,文末提供Python 技术交流群,欢迎加入,喜欢本文,点赞.收藏. 搭建语 ...

  6. 万字谏言,给那些想学Python的人,建议收藏后细看!

    1. 这几天陆续收到很多读者.球友的留言.私信,说要怎么学Python?有没有基础的,偏小白的学习方法?我的回答是:等我统一答复. 小胖从不食言,今天就来说说我觉得一个零基础.想转行.一直不得法的人应 ...

  7. 基于JavaScript 数组的经典程序应用源码(强烈建议收藏)

    文章目录 设计一个数组输入并显示的程序. 数组输入和显示 选择排序 选择排序 排序程序包 排序网页 杨辉三角形 杨辉三角形网页 C语言画一个sin(x)的曲线 螺旋线访问二维数组 JavaScript ...

  8. ❤️14万字的《微服务开发SpringBoot—从基础高级》(建议收藏)❤️

    文章目录 1.什么是SpringBoot? Spring框架回顾 2.什么是微服务架构? 特点 3.第一个SpringBoot程序 1.环境准备 1.创建基础项目说明 2.项目创建方式一: 3.项目创 ...

  9. 深度学习学习路径丨一文带你零基础入行!建议收藏

    深度学习到底有多热,这里我就不再强调了,也因此有很多人关心这样的几个问题,"适不适合转行深度学习(机器学习)","怎么样转行深度学习(机器学习)"," ...

最新文章

  1. 既然 JVM 有 Full GC,为什么还会出现 OutOfMemoryError?
  2. 第二种PHP协议,PHP多种形式,第二种使用来自First的数据
  3. java中channelmessage,MessagePack在Netty中的应用
  4. python招生海报_从原研哉的哲学中学习海报设计
  5. spring3的JAR包与注解学习笔记
  6. 微PE工具箱(CGI)安装Win10系统教程
  7. 富士施乐Fuji Xerox DocuPrint CP215 w 驱动
  8. 使用Petalinux定制自己的linux系统
  9. 群晖(synology)日历与IPhone日历同步
  10. 保护Android网络数据教程
  11. 15、Gantt 修改样式部分
  12. 计算分辨率长宽比(等比例缩放)
  13. Rust REPL Jupyter notebook
  14. 江苏电信用户将体验iPhone6s的极速4G+网络
  15. 基于JAVA服务预约家教网站系统设计与实现 开题报告
  16. 阿里云基于区块链服务构建企业业务系统实践总结
  17. 防手机锁屏解锁自定义View
  18. 为什么“时间管理四象限”没有用处?
  19. 在Puppy Linux中安装Firefox
  20. 计算机组织与体系结构_计算机体系结构中的内存组织

热门文章

  1. Android OOM案例分析
  2. 美团AI全景图:吃喝玩乐背后的黑科技
  3. 王仲远 | 基于概念知识图谱的短文本理解
  4. 抑制过拟合之正则化与Dropout
  5. 国科大prml12-半监督学习
  6. 时间约束的实体解析中记录对排序研究
  7. P1110 [ZJOI2007]报表统计
  8. js 图片库 改进版
  9. UVALive 7455 Linear Ecosystem (高斯消元)
  10. bzoj 4551[Tjoi2016Heoi2016]树