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

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

时间2025-05-05 12:32:39分类IT科技浏览3059
导读:大家好,我是王有志。好久不见,不过这次没有休假,而是搞了个“大”工程,花了点时间自学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
不胜什么?(Rubular: a Ruby regular expression editor and tester) 百度关键词收费标准(如何利用百度关键词规划师工具提高营销效率)