亚索的 Java后端开发 秋招经历
高能预警:本文5000多字,请备好瓜子、饮料和纸巾。PS:纸巾是为了以防各位同情亚索的悲惨遭遇,眼泪无处释放。
前言
亚索本人双非本,末流985硕,现在是2021年10月22日,2022届应届生秋招基本要结束了(只针对互联网私企等,国企还有大把的招聘会持续进行中哈),主要来说下亚索的秋招个人经历,总体来说准备不足、不太顺利,希望能给即将卷互联网的你和还不了解java开发行业的你一点点经验哈。以下纯属个人经历,也许可能是个例,如果有说的不妥,大家图一乐就行。
亚索本科和研究生都不是计算机科班出身,本科时期学的不多,LOL打的不少,属实大师级菜鸡,喜欢玩亚索(见上图😎)。研究生阶段因为项目需要才开始接触一些编程开发工作,具体来说备战秋招Java后端是从今年6月底才后知后觉地开始,在这之前对于Java面试知识点(Java基础、JVM、MysQL、计算机操作系统、计算机网络、Redis、SSM等)知之甚少,所以应该是秋招准备的太晚,才会造成后来的一些面试不太顺利吧。
另外着重需要强调的就是刷算法题(力扣、牛客网),这也是一个长期积累的过程,如果你想去互联网大厂,一定一定要早早地开始刷题,因为大部分公司都会在笔试和面试当中同时考察到算法编程题,注重解决问题的思路和编程代码能力,这些绝不是短期可以速成的,并且亚索个人觉得,多刷算法题,对于以后的工作或者项目编程也是有一定的好处,在熟悉编程规范的同时又锻炼了对于问题的逻辑实现能力,还是有很大积极作用的。
在这里要特别感谢Guide哥的GitHub开源项目--JavaGuide(88k+Star),里面总结了比较全面的Java常见面试知识点以及算法题,也可以下载对应PDF文档,整个秋招面试亚索基本都在看这个,大家有兴趣的可以关注一下Guide哥的公众号(微信搜索JavaGuide)。
1 正题
好了下面开始步入今天的正题吧,主要介绍一下亚索投的一些软件开发企业的笔试面试情况(仅挑选了一些有代表性的面试):
7-23 某东提前批一面挂
- 项目自我介绍:项目架构、工作量
- java基本数据结构:ArrayList与LinkedList区别,hashmap的put操作底层实现过程,Hashmap1.8之后链表添加元素是尾插,为什么换了,之前不是头插吗
- 线程安全:线程安全的list有哪些,concurrentHashMap的1.8版本怎么实现线程安全的,CAS算法介绍,会导致什么问题?与synchronized的区别?Reentrantlock底层实现原理
- 多线程:创建线程的4种方式,线程池的了解,线程池的大小怎么确定(CPU密集型与IO密集型)
- 平常你有了解哪些算法?你们的项目算法是怎么用的,算法计算引擎是什么(答的是java调python,问为什么不全部转python或者全部转java呢,我们也有类似的,后来都放弃了全部转python,为什么你们不这样呢)?算法是自己写的还是只是把别人的拿过来调一下参数?(简单说了一点然后就说到自己小论文的算法,然而他不感兴趣:出一道算法题吧)
- 算法题是字符串匹配:短字符串在长字符串第一次出现的位置以及出现的总次数一般考虑什么算法,KMP了解吗
- Spring中事务传播行为,几种隔离级别以及各自会导致什么问题,mysql针对相关的问题又是怎么解决的,Spring IOC介绍一下
- TCP三次握手四次挥手详细介绍以及为什么一个三次一个四次
- 分布式了解吗,JVM了解吗,项目部署有过JVM调优吗,项目有mysql的主从读写分离架构吗
- Redis单个key最大存储空间多少,是怎么计算的?
- UTF-8和Unicode的区别,mysql慢日志相关
- ......
还有一些问题记不清了,有趣的是最后的反问环节,亚索:请问什么时候能收到一个面试结果反馈嘛?面试官:这个的话我们是有三面,后面还有复试以及HR面,提前批一般八月初就能知道结果了。然后电话面试结束,官网就显示面试不通过了。
8-5 某华提前批一面过
- JVM内存分布,线程私有与共享区域,虚拟机异常SOF与OOM介绍
- GC roots有哪些,GC算法介绍
- JVM调优工具(类似于死锁排查工具):jstack、jvisualvm、jmc、jconsole,JVM常见参数
- Spring IOC介绍以及用到的java技术,Spring AOP介绍
- 数据库中delete、truncate、drop三者的区别
- Linux一些常用命令。
总的来说感觉回答的还可以,随后进入到二面了,二面关于数据库MySQL问的比较多,三面HR面通过,最后算是拿到了一个提前批的offer。
8-8 某米提前批一面挂
提前批主要问到:
- sql语句如何加锁,更新一条数据需要考虑什么,数据库实现事务隔离的两种方式
- Java和MySQL的乐观锁与悲观锁各是如何实现
- Http加密算法介绍
- volatile关键字主要作用:保证变量的可⻅性,防⽌cpu自动优化代码实现指令重排序,可以保证可见性和有序性,不能保证原子性
- ......
问的不难,但是一面完也就挂了,可能还是准备不足,个别知识没有深入讲解,回答较浅吧。
8-9 某节提前批一面挂
该公司提前批偏重于问一些脑筋急转弯和智力题,很多问题记不清了,这里提供一下身边同学被问到的问题:
- 优先级队列用什么数据结构实现
- 一个函数可以生成0-5随机数,怎么把功能改为生成0-7之间随机数
- B+数介绍,红黑树与平衡二叉树区别
- 内存分页管理机制
- 升序数组中某个数第一次出现的位置(二分查找)
- 甲乙两人从1开始轮流按次序报自然数,每人每次可以接着前面的人报1-3个数,谁先报到30谁就为胜利者,请分析甲先报必胜的对策。
最后问到是否能提前实习。
8.15 某友一面过
总体难度不大,问到了一些细节问题,比如写一段代码,回答输出结果以及代码执行顺序,主要考察类加载机制,双亲委派吧。一轮技术面过后HR面,最后给了offer。
8.27 某团一面挂
投递的应该是核心部门,所以感觉有点难度,一面时间总共1h30min,大部分问题都答上来了,个人感觉这是前期面试当中回答最好的一次,但还是挂了,也许还是回答的不够深入。很多问题回忆不起来了,内容大概如下:
- 红黑树为什么比链表查找快
- 常用并发工具有哪些,JUC包当中的CyclicBarrier与CountDownLatch的区别
- 数据库的高可用性怎么保证,读写分离一主多从,从库读,主库写会存在什么问题,哪些方案可以解决呢
- redis的持久化机制
- Linux系统如何查看某个线程占用CPU过多,为什么某个线程会占用CPU过多,如何去观察线程运行状态,Full GC为什么会发生,老年代对象为什么会过多,哪些对象会进入老年代
- Spring的注解方式
- 常用设计模式,举例介绍一下怎么实现的
- 实现多线程的方式,什么是线程安全,实现线程安全的方式,CAS原理,它除了会导致ABA问题还会导致什么问题(这个当时确实没回答上来)
- ThreadLocal相关。
- 算法题考察的是:二叉树中的最大路径和,可以去牛客或者力扣上做一做,有原题。
8月底 某节正式批笔试挂
笔试四道编程前三道全过样例,第四道过33%样例,做完笔试第二天就发感谢信了,感谢信内容为笔试不通过,询问HR后得知是简历不匹配,当时心里还是很难受的,为什么简历不匹配你还让亚索做笔试呢?这个笔试成绩算是还可以,面试机会总应该有一个的吧......冷静下来分析原因,主要有两个:
- 简历不行,没有互联网大厂实习经验或者相关项目经历
- 投递的是较为热门的核心部门,人太多,都太卷,大佬很多。
整个九月基本都在笔试面试:
9.2 某里一志愿面试
该公司有两个志愿,相当于两次投递机会,一志愿投递以后很快有面试官主动加亚索微信,直接问给offer能不能去实习,如果不能的话就......(懂的都懂哈),当时也是直接坦白说了不能提前去,随之也就进行了kpi一面,面试问的问题很八股,算法题很简单,只讲思路:链表查找中间节点,最后面试结束也是不出意外地挂掉,第二个志愿开始进入流程。
9.3 某壳笔试
某壳的笔试亚索先后做了两次,两次笔试都和身边同学ac通过率相差无几,结果同学进入面试,亚索没有面试,也没有收到感谢信,笔试成绩一样的情况,公司通过简历来排序亦或是通过本科学历排序,择优安排面试,这也是无可厚非的。
9.5 某讯笔试
五道编程题,a了一半以上吧,持续至今,仍然没有安排面试,官网查询进度显示,仍在投递简历阶段,很迷。
9.6 某某达一面过 9.10二面过
总体来说问的较为简单,一面问基础二面问项目,印象当中是没有刷题环节,HR面过后给offer。
9.7 某团一面继续挂
是的,你没有看错,继续一面继续挂了,被同一个部门的其他面试官捞了,这次面试深挖简历上的项目,没有问什么基础,最后也是由于项目深度不够,与互联网大厂要求不匹配,不出意外地挂掉了,自此某团的秋招结束,继续迷。
9.7 某度正式批笔试
某度提前批有过投递,但还是简历一般,一直显示"简历共享中",正式批投递进入了笔试阶段,笔试题型为选择题+三道编程,大概ac了两道编程,持续至今,仍然没有安排面试,官网查询进度显示仍在笔试流程中,内心os:笔试流程要持续一个多月吗?其实还是简历不行吧,继续迷。
9.9 某米正式批一面挂
某米又来面试亚索了,这次是顺利通过笔试进入的面试,综合了身边朋友和牛客上某米的面经,面试难度总体不大,但是要看运气,看自己碰到的面试官情况。
一面面试官听完自我介绍以后,不问其他基础,直接询问SSM相关(项目确实用到了一点Mybatis和Springboot,但是更多只是介于功能层面,对于底层的源码还是很多都没来得及学习),回答的很差,约好40min的面试直接缩减到20min,面试官临走前:行,你这边框架都不太会,你还有什么问题吗?视频挂断以后,果不其然,第二天晚上收到了感谢信。其实身边同学的某米面试还是很人类化的,至于亚索这个,也不知道是不是该信一信水逆这一说了。
9.11 某手笔试
某手官方说法是秋招挂了可以无限投,所以大概投了三四次,有的时候是简历挂在了HR筛选阶段,有的时候挂在了用人部门筛选阶段,改投了一个游戏部门的Java开发,进入了笔试,笔试题很简单,但笔试过后继续简历挂,类似的情况还有某易,某易主要错在了不该投递热门部门,但转念一想,大厂的边缘部门,真的值得去吗?看看最近某些公司的裁员现象,建议这个还是需要好好考虑一下哈。
9.12 某某艺正式批笔试
该公司提前批、正式批笔试都做过了,应该还是简历的原因,一直到现在,也未有任何消息反馈,类似的情况还有某哩等。
9.14 某程一面挂
类似于某米,碰到的面试官也许是做算法的,没问任何Java相关的知识,问了两个迷之问题就把亚索挂了:
- 评委打分是去掉一个最高分和一个最低分,然后求平均分,这种机制打分有什么问题,你有什么方法去解决这个问题,亚索:WTF?
- 商城打折活动,满500减50,用户已经购买了价值490的商品,你应该如何更好地向他推荐商品,来享受这个满减活动?亚索:再买10块钱的商品不就行了吗?可能这个问题他没表达清楚或者亚索没有听明白,最后结束面试,迷之困惑地结束流程。
9.16 某东一面过 二面挂
一面问的比较八股,有一个关于网络框架Netty的问题没有回答上来,其实这时候就应该注意到,框架相关的知识需要亚索足够的重视。
二面面试官应该是一面哥们的leader,没有问基础,自我介绍以后直接问Dubbo和SpringCloud等微服务、分布式相关的有没有做过,了解多么?亚索答:只是了解一些书本上的基础,没有做过相关项目。给的面评是:你这边分布式的都不太了解,没用过,情况我都知道了,待会会把面试结果在官网上填写,你还有什么问题吗?亚索OS:这还问啥呀,唱一首凉凉吧。
9.17 某为面试
一面二面基础知识问的不多,重点是做算法题,三面主管面其实也就是类似于HR面,最后全部面试通过,但是截止今天也没有任何消息,估计在池子泡烂了也不一定有哈,最近某乎热搜了解一下(😊)。
9.22 某兴终面过
直接谈薪资,有点逼签的味道。一面二面都是问的非常基础,没什么可聊的。
9.24 某丰HR面过
两轮技术面,问题大多为八股文,面试体验确实不错,面试官很准时,态度特别好。
9.25 某某某视线下HR面过
该公司一轮技术面,一轮HR面,也是较为简单,一面是Java基础、MySQL和Redis、SSM、分布式、操作系统和网络等方面各问一个问题,涉及全面,但问的不深。线下HR面的小姐姐挺好看的,成熟😍。
9.30 某里二志愿一面
面试官是位小姐姐,亚索不会的知识她会有引导,很专业,说话声音也很好听,一面是简历面,问的不算很难,其中关于缓存和数据库不一致性怎么解决,连连发问,回答的不太好,所以流程已流转,也不抱希望了。
10.9 某城笔试
笔试较为简单,全ac,但至今无反馈。
10.11 某某书三面过
该公司官网不能显式地查到进度,但是可以F12查询状态,显示三面通过,但也还没有HR面,大概是在池子里排序吧。
2 总结
以上大概就是亚索的整个秋招经历,写出来的都是富有代表性的,还有很多公司的情况大同小异,也就不再提及了。可以看到,秋招投的很多大厂,不是挂在了简历筛选的阶段,就是在笔试完发感谢信的路上,总结起来还是简历不太行吧,本科双非,由于亚索年少贪玩和无知,没有参加一些相关比赛,亦或是获得一些重要奖项,编程开发工作几乎都是研究生阶段的项目所涉及到,而这些项目又与互联网高并发、分布式项目的技术相差甚远,匹配度几乎为0,更没有实习经历,加上现在后端开发比较卷,投递的人越来越多,大厂招聘要求所以越来越高。
最后根据亚索自己的经历,给未来将要卷Java行业的同学,提几点小建议,亚索是小菜鸡哈,如果说的不对,欢迎批评指正!
- 互联网秋招不太看重学历,想卷大厂的后端开发,技术过硬才是最重要的!不要气馁,一定要提前了解,好好准备面试知识点,每天坚持抽时间刷题,打好基础了可以尝试去网上找一些比较好的开源项目,JavaGuide也有介绍很多开源项目,都是可以往简历上写的,简历有过硬的项目经验以及相关比赛奖项,进大厂还是不算很难的,冰冻三尺非一日之寒,技术知识重在长期积累,熟记于心。
- 如果执着于大厂,也可以考虑前端开发、算法、数据分析研发等相关岗位,这些可能没有后端那么卷。或者考虑大厂的非核心部门(PS:非核心部门并不完全等同于边缘部门),这些部门从简历筛选到技术面试可能都比较轻松,比如某团的网约车部门、金融部门等,我了解到的面试都不算难,可能技术一面就每个方向挑一个问题+手撕一道题就完事,二面才开始增加一些开放性问题,当然也看运气,在于你碰到的面试官,只要跟面试官聊得愉快,JVM、MySQL底层知识能回答的较为透彻,就算SSM框架不太了解,面试通过也是很有希望的。
- 未来只会越来越卷,大厂招聘要求越来越高,大家如果可以实习尽量去实习,积累大厂实习经验,身边很多同学都是直接去阿里、字节实习最后转正的,他们可能都没有去体会秋招的艰辛,等着转正offer开奖就完事啦。如果不能实习,建议在熟练掌握JVM、MySQL、Java基础的前提下,对SSM框架以及重点部分的源码一定要有所了解,并且有自己的实操代码经验,另外就是第一点说的,开源项目的实操。
非常感谢能读到最后,要说的基本就这些了吧,关注亚索学Java,后面每周会定期分享几篇技术干货知识点,分享总结的同时也是为了加深印象、共同学习,方便日后和大家一起卷起来,奥力给!大家有什么想说的欢迎评论区讨论或者批评指正,第一篇文章,可能说的有点啰嗦,见谅哈!
#面试题目#