Java面试都问啥?

01.Java面试都问啥?

2022-10-23  本文已影响0人  王有志

大家好,我是王有志。又是好久不见,不过这次没有休假,而是搞了个“大”工程,花了点时间自学Python,然后写了“玩具爬虫”,爬某准网的面经数据,为来年的“春暖花开”做准备

今天作为开篇,还是和大家随便聊聊:

最后,会和大家分享这个“玩具爬虫”,当然因为是半路出家,我写的Python很不Pythonic,大家简单的参考就好了。

我为什么想换工作?

今年是我在这家公司的第三个年头了,不过最近我打算出去看一看了。

这家公司不好吗?

965,很少加班;中等薪资水平,对得起工时了;小福利还算不错,该有的都有,还会不定时的发一些购物卡;工作也很稳定,如果不犯错的话,我应该可以在这退休。

听起来是“梦中情司”了,那我为什么还要换工作?

第一,保险这类业务导向的公司,谁是公司的“爸爸”?业务部门!因此,许多“奇思妙想”的需求会让你很心累,有时候你甚至需要解释“为什么APP的主题不能跟随手机壳改变”这种问题。

第二,传统行业的“低并发”看不到太多技术层面的挑战,虽然leader已经努力的拥抱“新技术”了,但始终是畏手畏脚,可以理解他的顾虑,所以想去看看外面的世界。

第三,个人规划的原因,我并不打算留在北京,或许是留不下来。我想回去,因此需要一段“叫得上名字”的互联网公司的工作经历为我背书,仅仅是保险行业内的名气并不会让我有太多议价权。

第四,还有比跳槽涨薪更快的方式吗?

做了哪些准备工作?

相信很多长期不挪窝的小伙伴,看到别人跳槽涨薪内心都蠢蠢欲动,可是想到要面试,又不知道要准备哪些内容,于是在“挣扎”中慢慢的浪费着时间。

其实我也是这样的,在自己的舒适圈内过得很安逸,想了很多次的跳槽,可总感觉自己没准备好。想想之前的三次面试都是“裸面”,每次结果都不是很理想,所以这一次,我要充分的准备,力求让我即便在“寒冬”也能得到不错的结果。

那么这次我都做了哪些准备?

首先是回顾了下数据结构与算法的知识,也就是《和王有志一起学习数据结构与算法》的内容,只不过最近为了学习Python,暂时中断了。

接着是自学了Python,系统的学习了语法,因为有Java的基础,这部分学起来其实很快,只不过要一边工作一边学习,大概花了一周左右。


我骄傲.png

然后找了一个简单的爬虫,抄抄改改的花了2天时间完成某准网的“玩具爬虫”,虽然有点坎坷,也算是满足了需求。

第四步就是数据分析了,花了一点时间过滤掉无效信息,然后花了一顿小吊梨汤,找了朋友帮忙写了关键词统计和分析的程序,因为用了他们的二方库,程序就不放上来了。

Java面试到底问啥?

这次总共爬取了30家公司的面经,原始数据约4000条,从中选取了近两年(2021年开始)的社招面经数据约400条数据,我就从这400条数据进行“小”数据分析。

数据统计

说明下统计方法,程序统计关键词出现的频率,然后针对程序无法识别的内容进行人工统计,因此有些关键词出现的次数会大于400的。

我将面经中出现的问题分为9大类:

我们通过一张饼图来展示数据分析的结果:


Java面试都问啥?.png

很明显,Java依旧是面试中提问次数最多的,其次是计算机基础和数据库相关的内容,然后就是应用框架和项目相关的内容。

接下来我们看看面试“三幻神(Java,计算机基础,数据库)”具体涉及到哪方面。

Java都问啥?

我将Java的问题分为了4大类:

具体的统计结果如下:

Java统计结果.png
并发编程和虚拟机不出所料的荣登冠亚军宝座,这两部分的内容基本上可以考虑全量准备了,而且会问得非常深,请尽量做好准备再参加面试。

Java基础是设计理念,API应用等,大部分内容较为基础,随着工作年龄的增加,问到的概率逐渐降低,但是需要特别关注String类,反射,动态代理,IO/NIO和网络编程

集合框架想必大家都很清楚了吧,HashMap和ArrayList会扣着源码问,建议有能力的同学阅读源码,尤其是注释会有详细的解释为什么这样设计,例如:HashMap中使用到的泊松分布。

计算机基础都问啥?

计算机基础的问题分为3大类:

统计结果如下:

计算机基础统计.png
如果目标是互联网公司,复习的时候重点可以放在数据结构与算法上,常问的内容有链表,二叉树,排序,动态规划和贪心算法等,题目的难度在LettCode上属于中等

由于HashMap中使用到红黑树,因此二叉树中会涉及到红黑树,大部分是讲原理即可,极少会要求实现。而过往较少涉及的多路搜索树,也是因为MySQL中使用B+树作为索引的结构,常会问到多种搜索树结构(不仅仅是多路搜索树)的对比

至于计算机网络和操作系统的内容,可以关注我后续的文章。

数据库都问啥?

我将Redis的部分也放到了数据库的统计中:

统计结果如下:

数据库统计.png
MySQL占据了半壁江山,重点依旧是索引,隔离级别和SQL优化,MySQL的引擎也会被提问到,索引的部分会和数据结构产生联动(数据结构真的有用!!!)。

Redis中涉及到的主要是,实现原理,数据类型,分布式锁,持久化,集群等,缓存雪崩/击穿/穿透等,从数据上看布隆过滤器很少被问到。

SQL基础的话基本都是给出案例写SQL,对SQL功底的要求较高。而数据库设计的部分,主要是分库分表设计,如果目前的项目还无需分库分表,也可以先储备这些知识。

一些结论

到目前为止,我给出了面试“三幻神”中一些细分内容的统计,至于应用框架,分布式与微服务,消息中间件等的具体统计结果,介于篇幅的原因,我会在今后的文章中放出。

先给出一些我得到对的结论:

最后额外说一点:

技术人员要有好口才!

技术人员要有好口才!

技术人员要有好口才!

结语

今天和大家分享了我这个星期在做的一些工作,也算是为大家提供一个面试准备的思路,希望对大家有所帮助。

本篇内容的代码仓库:Gitee代码仓库


好了,今天就到这里了,Bye~~

上一篇下一篇

猜你喜欢

热点阅读