万变不离其宗,Java程序员面试要点

正值“金三银四”的浪潮,各种面试文章层出不穷,尤其以各个大厂的面试题最为突出,当然这与大厂的面试题更加具有代表性有关系,而小公司的面试题往往五花八门,有的更加贴近公司自身业务,希望面试者结合业务给出解决方案。

本人也是会偶尔看看这类文章,看一下自己的知识点掌握的怎么样,查漏补缺。顺便看看评论区其他人的对于问题理解,了解自己的不足之处。

不过我发现一件事情,那就是无论面试题再怎么变,说白了其实就三个问题:

1.基础知识考核

在这个层次上,主要考核你对 Java 语言本身原理的理解以及各种框架的原理理解。

对于 Java 开发岗位上来说,这些知识点包括但不限于:

集合 HashMap 的原理,与 Hashtable、ConcurrentHashMap 的区别?

Java 线程池的核心属性以及处理流程

Java 并发包原理、Synchronized关键字、锁

线程的生命周期

JVM类加载机制

JVM内存模型

JVM分代以及垃圾回收机制

Spring Bean 容器生命周期

Spring AOP 原理

Dubbo 请求流程以及原理

数据库 SQL 优化、数据库索引、索引原理

……

上面只是说了很少的一部分而已

其实你不需要全部都懂,但需要了解大部分知识点,并且在这大部分知识点中,还需要有部分是了解得非常深入的。如果达到这个水平,基本上都能通过考核。

对于基础知识的考核是必不可少的,所以基础不好的同学有时间就补补,对自己对项目都是没什么坏处的。

2.知识深度

基础面试题说来说去也就是那些,看看面试题就能掌握得八九不离十了。

但是你以为就这样?其实不然,大厂面试官还有一个爱好,就是对于每个知识点,都喜欢深入往下问,问到没有问题可以问,或者问到你不会为止,这样提问的目的只有一个,就是试探你对这个知识点的理解深度,如果你无法提供足够深刻的回答,结果往往就是失败。

举个例子来说,大家都知道JVM的GC,一般来说,常见的GC算法、垃圾回收器也都知道那么几个,但是要说到具体的回收过程,可能很多人的理解还是没有到位。

我们可以这么回答:首先对象先分配到年轻代,下次GC时,活着的对象进入老年代,实际上年轻代还分为Eden和Survivor区,Survivor区又分为From区和To区,From区和To区的对象在每次YGC时都会交换,在Survivor区存活下来的对象的年龄会+1,直到年龄达到进入老年代的阈值,此时Survivor区的对象进入老年代。

就算答案已经这么冗长,其实还可以被拓展,被补充。面试是一个面试官考察你的机会,也是一个你展现自己能力的机会,所以,每次面试都要毫无保留,把你会的东西全部表现出来,结果往往会令人满意。

相比于基础知识,要提高你的知识深度更加需要时间和精力,这就不是一朝一夕的事情了,需要你不断地去积累。

3.解决问题的能力和学习能力

这个问题就比较广泛了,也没什么定式。但是有一点是肯定的,面试官的问题你能解决是最好。但是让你一脸懵逼的题目也是有的,题目可能很难,但是面试官想看到的是你思考的过程,以及解决问题的能力,如果你可以介绍自己的思路,给出一些解决方案,就算题目真的不会写,可能也会给面试官比较正面的影响。所以有时候面试官也会适当的给你一些提示,开拓你的思路。

当然了,一连好几个题目你都不会,那你也就没什么解决问题的能力了,至少对他的要求而言是如此的。

针对新手和工作年限不高的,更多主要是看你的学习能力。

总结

一般而言面试其实说来说去,无非就是这三个方面。

这是刨除你的简历、面试时表达能力没问题的情况下。

可能有些人会觉得太笼统,难道你连自己要面试公司所要求的技术栈都不知道嘛?

还是说对自己所在领域的需要掌握的技术栈不了解?如果这也不知道,那我就真的没办法了。

现在的互联网行业,Java领域比较广泛应用的无非就是高并发、分布式、微服务、高性能、源码分析、JVM等技术。

我自己收集了一些Java资料,里面就包涵了一些BAT面试资料,以及一些 Java 高并发、分布式、微服务、高性能、源码分析、JVM等技术资料

资料获取方式:请加群BAT架构技术交流群:171662117

猜你喜欢

转载自blog.csdn.net/leonardc/article/details/88933790
今日推荐