首页IT科技01JAN1950是几月几号(01.Java面试都问啥?)

01JAN1950是几月几号(01.Java面试都问啥?)

时间2025-07-30 23:16:01分类IT科技浏览4318
导读:大家好,我是王有志。好久不见,不过这次没有休假,而是搞了个“大”工程,花了点时间自学Python,然后写了“玩具爬虫”,爬某准网的面经数据,为来年的“春暖花开”做准备...

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

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

我为什么想换工作? 做了哪些准备工作? Java面试到底问啥?

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

我为什么想换工作?

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

这家公司不好吗?

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

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

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

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

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

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

做了哪些准备工作?

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

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

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

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

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

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

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

Java面试到底问啥?

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

数据统计

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

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

Java核心编程:Java基础                     ,集合框架         ,并发编程      ,Java虚拟机等; 计算机基础:数据结构与算法                     ,计算机网络            ,操作系统等; 软件工程:设计模式   ,系统设计等; 应用框架:Spring                     ,Spring Boot                ,Mybatis,Netty等; 数据库:SQL                 ,MySQL                    ,Redis   ,MongoDB等 分布式与微服务:分布式理论             ,分布式事务                     ,Spring Cloud(Alibaba)等; 消息中间件:消息中间件设计      ,Kafka         ,Rocket MQ等; 常规提问:根据简历提问                     ,项目提问等; 其他:面经中出现次数较少         ,如:K8S      ,Docker等        。

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

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

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

Java都问啥?

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

Java基础:面向对象,API                 ,IO                    ,网络编程等; 集合框架:Map和Collection接口下的内容   ,但不包含JUC中的容器; 并发编程:线程             ,线程池                     ,synchronized      ,volatile和JUC等; 虚拟机:垃圾回收         ,内存模型                     ,类加载机制等           。

具体的统计结果如下:

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

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

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

计算机基础都问啥?

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

数据结构与算法 计算机网络 操作系统

统计结果如下:

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

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

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

数据库都问啥?

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

SQL基础:SQL的基础用法             ,MySQL中的函数; MySQL:索引                     ,引擎      ,事务         ,隔离级别                     ,优化等; Redis:Redis的数据类型         ,分布式锁      ,持久化                     ,集群            ,解决方案等; 数据库设计:三范式   ,表设计; 其他:MongoDB                     ,PostgreSQL等                。

统计结果如下:

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

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

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

一些结论

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

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

Java“三幻神      ”:并发编程             ,虚拟机                     ,HashMap MySQL“三幻神         ”:索引      ,隔离级别         ,优化 应用框架“三幻神                     ”:Spring                     ,Spring Boot         ,MyBatis Redis和kafka是中间件中最常问到的内容 消息中间件的设计也是一个重点 互联网企业中      ,数据结构与算法属于必备技能 分布式理论/事务                     ,是3年以上Java工程师的基础            ,涉及到解决方案   ,设计原理 涉及到云原生和DevOops的较少                     ,如果能够熟练                ,算是亮点 要能够完全“掌控         ”简历上的内容,无论是精通还是熟练                 ,都会深入讨论 项目要“出彩      ”                    ,即便是“屎山                     ”项目也要“美化            ”成一朵“花   ”

最后额外说一点:

技术人员要有好口才!

技术人员要有好口才!

技术人员要有好口才!

结语

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

数据统计的原始结果会放到Git仓库下                     ,初步整理后的结果可以关注王有志回复关键字统计结果      ,至于题目         ,因为是手工整理                     ,暂时还没有完成         ,后续会按照分类结果逐步提供给大家                  。

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

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

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win10任务栏假死根除(如何解决Win10系统任务栏假死?) opencv缺陷检测常用方法(opencv 六 缺陷检测实战2(PCB缺陷检测——小面积缺陷))