一分钟了解java程序员面试会遇到的问题

Posted Java社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一分钟了解java程序员面试会遇到的问题相关的知识,希望对你有一定的参考价值。


Java社区

关注即可免费领取500G教程资源

一分钟了解java程序员面试会遇到的问题(二)   一分钟了解java程序员面试会遇到的问题(二)

1、数据结构和算法分析

文章分为两篇:第1篇《》点击可跳转查看。

数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中绝对能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较 重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。记得某次面试,某个面试官和 我聊到了数据库的索引,他问我:你知道索引使用的是哪种数据结构实现吗?

一分钟了解java程序员面试会遇到的问题(二)

2、Java虚拟机

出乎我的意料,Java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。要知道,我去年可是花了大量的时间去研究Java虚拟机的,光周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,我就读了不下三遍。

言归正传,虽然Java虚拟机没问到,但我觉得还是有必要研究的,我就简单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:

(1)Java虚拟机的内存布局

(2)GC算法及几种垃圾收集器

(3)类加载机制,也就是双亲委派模型

(4)Java内存模型

(5)happens-before规则

(6)volatile关键字使用规则

也许面试无用,但在走向大牛的路上,不可不会。

3、设计模式

本来以为蛮重要的一块内容,结果只在一家大公司面试的时候被问了一次,当时问的是装饰器模式。

当然我们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:

(1)你的项目中用到了哪些设计模式,如何使用。

(2)知道常用设计模式的优缺点。

(3)能画出常用设计模式的UML图。

一分钟了解java程序员面试会遇到的问题(二)


4.多线程

这也是必问的一块了。因为具备一定的工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说Thread和Runnable的区别和联 系、多次start一个线程会怎么样、线程有哪些状态。当然这只是最基本的,出乎意料地,几次面试几乎都被同时问到了一个问题,问法不尽相同。

总结起来是 这么一个意思:

假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

另外,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?实际一些的,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。

最后,虽然这次面试问得不多,但是多线程同步、锁这块也是重点。synchronized和ReentrantLock的区别、 synchronized锁普通方法和锁静态方法、死锁的原理及排查方法等等。

5、JDK源码

要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。我面试过程中被问了不 少JDK源码的问题,其中最刁钻的一个问了我,String的hashCode()方法是怎么实现的,幸好我平时String源代码看得多,答了个大 概。

JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:

(1)List、Map、Set实现类的源代码

(2)ReentrantLock、AQS的源代码

(3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的

(4)线程池的实现原理(5)Object类中的方法以及每个方法的作用

关注公众号,公众号回复【Java面试520】就可以领取一整套从Java基础到开发进阶的教程视频。内附:开发工具及源码及文档

往期精品热文,点击即可查看

《利用脚本不限速下载百度网盘文件



一分钟了解java程序员面试会遇到的问题(二)


Java社区

关注领500G教程

一分钟了解java程序员面试会遇到的问题(二)  


以上是关于一分钟了解java程序员面试会遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

今天遇到一公司的超难的java面试题,面挂了,求帮忙!

java面试一定会遇到的56个面试题

面试官:CPU百分百!给你一分钟,怎么排查?有几种方法?

最全SpringBoot学习教程:面试java自我介绍一分钟

阿里巴巴JAVA面试真题

[精品干货]面试题库第二波:java面试一定会遇到的56个面试题