小菜鸡的2020秋招分享

看了那么多大佬写的面经,这次就不白嫖了。
先说一下我个人情况,本科双非研究生211通信专业非科班,学的是java开发。3月9号开始刷题到9月18号停笔,在LeetCode上刷了262道题,牛客上刷了97道题,剑指offer过了三遍。秋招一共投了42家公司,面了16家,拿到了4个offer(快手,百度,科大讯飞,映客),还有两个在等hr面结果。

因为疫情影响,前三个月在家复习,主要是看jvm,多线程,数据结构以及spring框架。5月底来学校开始系统学习mysql,mq和redis及设计模式。最后基于spring框架做了一个电商秒杀的项目,6月底开始投简历面试。

1  笔试篇

只要是互联网公司基本上都有笔试,而且笔试是求职的第一道屏障,大公司的笔试题一般都比较灵活(难),三道题至少a出一道才有面试机会。考查最多的数据结构是是字符串和数组,出现频率最高的算法是回溯,DFS和动态规划,平时不太关注的并查集和前缀树也有涉及。最后的压轴题基本上是和图相关(最短路径,最小生成树)。80%的互联网公司每轮技术面至少一道代码题,有的公司甚至把代码能力作为第一考核标准,代码题没撕出来直接没了。一定要提前练好输入输出,好多题其实你有思路也能写的出来,但是输入输出就是搞不定。建议去牛客网的在线编程模块试试白板编程,多写写其实也不难。另外笔试环境下一般允许你跳出页面去自己的编译器上面写,这个太重要了,首先你可以避免一些简单的语法错误,可以验证你的输入输出是否正确,结果有问题还可以调试,完全ok的话直接粘贴到白板上。即使这样也有可能跑不完100%的用例,这时再去仔细审一遍题是不是有大数越界或者漏了一些边界条件?

面试中的笔试题会简单一些,而且有很大概率是剑指offer上的原题。你还是有可能做不出来,因为你只做过一遍印象不深或者是面向题解编程。平时刷题一定要先有自己的思考,从最简单的暴力解法出发,后来再慢慢优化。保证自己解题思想的连续性。还有就是刻意去写那些你不擅长的题,多动笔,遇见回溯画递归树,动态规划就打表格。快排归并堆排是面试中几乎必问的排序算法,可以停下来想想你是否能100%正确写出这三个算法?百度一面让写堆排,快手一面写快排并且优化。还有经典的topk问题,这些几乎是你在面试前一定要特别熟悉的东西。如果你运气不好遇见没做过的题,别慌先确定一个大概的思路,假如是回溯先把回溯的框架写出来,后来再根据题目要求写限制条件,保证你写代码的一个完整性。写完之后和面试官交流一下思路,思路没问题有的面试官会让你把程序跑起来,用例跑不过你就要调试去发现问题。我遇到的面试官一般不会要求跑用例,更多是看你的算法思想。

结束秋招前每天最好要写一道代码题保持手感,可以跟一下LeetCode上的每日一题。刷题在质不在量,可以按照LeetCode上面的标签对已经写过的代码题做一个总结,特别是那种高频出现(LeetCode top100),一题多解的题目。好处一是你可以随时回顾那些你易错和高频的算法题,二是遇见新题不至于没思路。

2  面试篇

面试的话看你和面试官的交流是否能给他留下深刻印象,常问的就是那些东西。每个人多多少少都能答出来。答的出彩是你脱颖而出的关键。这里面我有一些体会可以和大家分享一下。

线程池是面试中比较常见的面试题,一般面试官会问你对线程池的了解。一个正确但是一般的回答是直接聊线程池的构造以及它的工作流程。其实你可以先问问自己为什么要用线程池?不用可不可以?用它有什么好处?不用线程池你还想开多线程去高效的执行任务,面临的第一个挑战就是OOM,因为我们知道JVM为每个线程分配了一个独立的栈内存,线程增加到一定数量后必然会发内存溢出。第二个点是线程越多线程的上下文切换也就越频繁,操作系统内核态和用户态的切换也会变多,cpu的负载也会越重。所以用多线程的第一个好处是实现线程的复用,第二就是线程池可以通过几个核心参数去灵活地构造它,满足不同业务场景下的需求。然后再去聊有哪些参数,构造方法有哪些,工作流程是怎样的。最后再问自己一个问题有了线程池就万事大吉了么?可以从阻塞队列的类型,发生异常后任务丢失这两个点上去想。你能回答出上面自己提出的问题就说明你对线程池的了解还是比较全面的。最重要的是你向面试官展现了自己对于线程池前因后果的一个思考,有一个逻辑上的连贯性。而不是人云亦云,就池论池。

引导也是面试中常用的一个小技巧,比如面试官问你遇到OOM是怎么排查的?好多人可能上来就说我是怎么排查的,用到了什么工具等。其实可以先想想OOM是怎么产生的,知道原因再去排查会不会更好一点?能产生OOM的地方除了了程序计数器都可以,然后想想其他区域存的主要(只讨论主要)都是些什么东西,栈是栈帧(对应方法),方法区存的是类的一些信息,堆中存对象。单个栈在递归调用的过程中可能会发生栈溢出,或者多线程情况下会有多个栈消耗内存发生OOM,不过可以用线程池来避免这种情况。方法区就是加载的类过多,要么是程序启动时加载的类,要么是程序运行过程中通过动态代理技术加载进来的类。最大的可能是堆中存放的对象过多,因为垃圾回收的主要区域就是堆,对象一直回收不掉导会导致OOM。然后再对症下药,通过一些Linux指令和JVM的内存参数再结合可视化工具去排查和解决OOM。面试官通过你上面的分析知道你对JVM的内存还是比较了解的,你既然提到了线程池,垃圾回收和动态代理,这很有可能就是你的下一个面试题。

这样的例子太多了,核心就是你要给面试官惊喜,尽量避免短暂的一问一答。上面两个例子中的知识大部分人都知道,但在能在面试中完整表达出来的不多。平时多想想,和身边的同学模拟一下面试场景。还有就是养成记录的习惯,脑图它的树形结构天然就有很强的逻辑性,发现事物之间的逻辑关系就是体现你真正思考的地方。

提前批的好处是免笔试,而且有大量hc,劣势是会对后面的正式批产生一些不好的影响。在准备比较充足的情况下还是要多投投提前批。最后祝大家都能找到一个好工作。
#学习路径##笔经##面经#
全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务