0实习、0论文、技术栈不全、项目不匹配,但大厂ssp!

标题党一下,先做个自我介绍:

本人24届Java后端选手,bg双九,研究方向密码学,技术栈Spring、Redis、Kafka全都不会,项目只有密码学(C++)和区块链(Nodejs)。秋招正式批拿了几个offer,其中有开水和老铁厂的ssp以及宇宙厂sp,遂没参加补录批。

写这篇帖子的主要目的就是想给像我一样在找工作方面debuff拉满的同学突击春招做一些参考,同时也是回馈社区,没有牛油们就没有我的今天

(写在前面)在这里放一下我本科舍友的帖子,他当时本科毕业就找工作了,然后也写了一篇分享贴,虽然是三年前的帖子,但很多内容还是值得参考:神奇的3个月突击大厂后端上岸教程,纯干货,只为分享好链接

这篇文章我主要通过我秋招的几个关键词来展开(篇幅较长但比较下饭)。

1、提前准备

说起来很有意思,因为我的本科是中上985,所以我读研期间一直以为找工作还跟我们本科毕业的时候一样简单。直到去年春天,我回本科学校跟兄弟们吃了顿饭,他们告诉我最近春招找实习非常困难,我的认知才发生了一点转变,但当时我还想着转博,遂没有参与春招。所幸我这人喜欢给自己留个后手,虽然没有参加春招,但是从那天开始,我就开始了每日一题。再加上我本科有300题的储备,秋招期间我已经几乎不需要再刷题了。(在这里插一嘴,刷题量不是最重要的,有一定基础我还是建议多参加周赛,跟大厂的笔试还是挺像的)

紧接着我转博失败,于是在五月份下定决心找工作。来到了六七月份,这个时候我刷题量已经500+了,并且背完了Java比较基础的八股、计网和操作系统,实习过的好兄弟就劝我找个实习并且做一个跟后端岗位比较匹配的项目(因为我之前的项目都跟科研相关,要么是密码学要么是区块链),虽然当时我不太清楚这个劝告的含金量,但好在我这人听劝,投了字节的日常实习,不出意外三面挂了,挂的原因居然是我算法题没写出来(你要问我为什么知道是这个原因,因为面试官上来就说写个题吧,然后我没写出来,又换了一个,我又没写出来,然后他就说面试到这儿了)。没写出来的原因是:

  1. 第一题是 143题 ,重排链表,这题我是会写的,但是我 没用过ACM模式 写题,一紧张把ListNode定义成内部类了,导致链表的节点我初始化不出来,但面试官以为我没思路。
  2. 第二题是 518题 ,零钱兑换Ⅱ,很简单的dp,但状态转移方程写错,面试结束。现在想想还是当时觉得自己题量很大,太飘了,对已经刷过的算法题没有好好沉淀。

这次日常实习挂了以后我也没有再投,而且这个时候很多公司的提前批已经开了,于是乎,我怀揣着0实习、不全的技术栈、不匹配的项目参与到了秋招大军。秋招我一共投递了70多家公司,其中有30多家直接挂了我的简历,还有几家虽然给我发了笔试,但我算法AK也是秒挂,其中老BAT三家我更是无一进面。现在想想,剩下40家公司没挂我简历兴许也就是觉得我bg过得去了。

所以我觉得 提前准备 这件事情真的非常重要,其实在人生的每一个阶段都是如此,比如我们希望找工作,那就提前为找工作做准备,例如做一些匹配的项目、找相关的实习、背相关的八股等等;我们希望保研,那就认真对待每一门课,提前了解保研政策,并对着保研加分项去努力等等。很显然,去年的我把找工作这事儿想得太简单了,没有提前准备,所以才非常被动。

2、算法

说实话,秋招我能拿到的好offer,无一例外,都是面试官重视算法。我本人刷题量是596(但本科毕业就300+了),周赛最好成绩200多名,最差成绩1000名开外,基本到十月份常规的medium题目10min以内肯定是能AC的(大部分都是3-5min)。本来以为这已经足够用了,但是七月份字节的日常实习还是给我敲响了警钟,让我意识到 笔试和面试写算法还是很不一样 的(的周赛更像是笔试,出现的题目往往都没见过;而面试的时候往往面试官只给你10-15min来写题,当然出的题一般也是经典题)。好在又是我的好兄弟给我推荐了codetop。(百度搜codetop第一条就是)

codetop好就好在,因为题目的出现频率是大家维护的,所以真的很准,几乎所有面试会遇到的题目都跑不出前五页,当然时间原因这个网站我只刷了前三页。这些题目里我没有在10min内AC的,我会做一个标记,过段时间再写一次,循环往复,直到这个题目我10min内轻松AC。因为这样的题目越来越少,所以这个工作并没有占用我太多的时间。

当然,并不是算法写好了就万事大吉了。我也经常遇到两道medium完成最后挂掉的情况,有的时候是因为我不会Spring,有的时候是因为我不会Redis,但因为投的多,总有面试官会不在意这些,但他会觉得算法写得熟练也算是闪光点。

另外,平时刷题的话一定要练习一下 ACM模式 ,牛客网有一个练习输入输出的地址(当然也不要忘了练习一点需要自己定义结构体或者类的题目,都是教训啊):

OJ在线编程常见输入输出练习

补充一点,对于一些经典题目来说,很多题目AC了之后也要去学习一下题解中的优秀代码,一方面是可以学习一下最优的解法和思路;还有就是可以帮助我们扩展解题的思路,让我们能够在面对一些算法题的时候有一题多解的能力。一般灵茶山艾府(灵神)、宫水三叶、Krahets(K神)的题解我是必看的,还有一些大佬比如甜姨、weiwei哥我忘记他们的id了。当然,如果有时间,也可以自己写一写题解,题解这个东西就属于看着很简单但自己写起来就不知道怎么下笔,但对于我们梳理思路还是很有用的。(欢迎看我的题解,我的id是 一只粗糙的疯子)这里给我自己的题解引个流hhh,虽然写得还是很朴素,但已经尽力了。

3、不断迭代

我觉得这个词其实在我们的今后地生活中会一直存在,我们需要不断地提升自己的认知、学习新的技能。秋招阶段对于我们很多人来说都是一个加速成长的阶段,因此迭代这件事情也就,或者说应该比我们平时要更加频繁。我秋招期间的迭代,主要来自于我面试经历的反馈和复盘,下面分享三个比较有意思的事情。

我的第一版简历,只能用惨不忍睹来形容。当时简历里面的项目经历只写了一个密码学的项目,而且自己的贡献就是对项目做了重构,采用了模块化的编程,提高了可扩展性(其实就是实现了很多复用的函数)。之所以做的时间久,一是因为很多时间在弄数学,还有就是这代码......。所以当时简历挂对我来说是一件很常见的事情,即使进面了,面试官也不会过问我项目的事情。后来快手二面的时候,面试官在面试结束后跟我讲,他说我基础还不错,但是简历写得有些太单薄了,再好好沉淀一下自己的项目,可以按照STAR原则总结一下,另外就是拿了这么多奖肯定不止一个密码学的项目经历,可以多写两个上去(谁懂啊,太感人了)。于是我马不停蹄迭代了一版简历。

有次美团一面(是的我不止一次美团一面),面试官问我:你的项目做了 重构 ,用到了哪些 设计模式 吗?我说没用过,事实上,我那个时候压根没学过设计模式。然后,几十分钟的八股捶打(事实上后来复盘我发现这些基础八股我答的还行)以面试官的两句“用过Redis吗”、“Kafka总用过吧”和我的两句“没用过”、“也没用过”戛然收尾。尽管最后我10min敲完了两道medium,但还是逃不过被挂的命运。也是这次面试让我意识到,设计模式和Redis我是非学不可了。还真别说,学完设计模式并且结合到我密码学项目中之后,面试官对我密码学项目的兴趣明显要多了一些,这里放几个我学设计模式的链接:

23 种设计模式详解(全23种)

25000 字详解 23 种设计模式(多图 + 代码)

23种设计模式(Java版,超详细!)

当然,不仅仅我们的简历需要迭代,我们的知识也需要迭代,比如上面,设计模式我当时就专门挤出了1-2天来仔细学习,其中重点学了跟我项目重构匹配的那几个。提醒我知识迭代的是京东一面,当时面试官问了几个我没答上来的问题:

  • ConcurrentHashMap的put()方法是怎么实现的CAS机制?
  • 对于32线程的CPU,线程池ThreadPoolExecutor的corePoolSize和maximumPoolSize参数应该如何考虑?
  • 简单描述一下JMM?方法区主要存储哪些内容?如何实现方法区的GC?

你可能乍一看感觉第三个问题很抽象,感觉前面的问题跟后面的问题毫无关系。没错,因为面试官提起JMM的时候,我给面试官描述了JVM的运行时数据区......也是这场面试让我发现,我的 Java并发JVM 学得一塌糊涂,于是连带着刚刚提到的Redis,我专门抽了2-3周的时间请教了我的线上编程老师——尚硅谷,把这些都系统地学了一遍。(这里我要说一下,专门抽2-3周的意思是,这2-3周我除了笔试面试就只干这一件事情,而且由于尚硅谷JVM和Redis的视频实在是太长了,我也是对着高频考点挑着看的,没全看完,你要问我为什么学设计模式的时候没有看尚硅谷的视频而是看知乎的帖子?其实也是因为设计模式尚硅谷的视频太长了......)。

4、比别人多学一点

这个关键词源自于我某次思考人生(就是秋招某次受挫后的发呆),当时我在想:我们背八股,面试官也知道我们背八股,那我怎么样可以让面试官觉得我跟别人不一样呢?或者说我看上去比别人经验更丰富呢?于是得到了一个结论——多学一点儿。啥意思呢,举个栗子:

面试官问:讲讲数据库的隔离级别。这个问题大家都会:读未提交、读已提交、可重复读、可串行化,以及相应的例子大家也都会列举出来。但是,这个时候我一般会再来一句:像我平时MySQL用得比较多嘛,MySQL的默认隔离级别就是可重复读,我当时还专门看了一下,用select @@transaction_isolation这个命令查了一下,然后如果要修改的话可以用set global transaction_isolation = 'READ_UNCOMMITTED'这个命令(比如说改成读未提交)。

再比如一个很经典的问题,如何解决Java多线程编程中的“脏读”问题。这个大家也都会,我答这个问题的话:大的方面主要考虑悲观锁和乐观锁,悲观锁常用的有synchronized、ReentrantLock,然后介绍一下synchronized三种情况下的加锁情况:修饰实例方法、修饰静态方法、修饰代码块;简单介绍一下ReentrantLock的用法,比如使用的时候需要调用lock()方法加锁,然后在finally代码块中调用unlock()方法解锁。乐观锁通常用Atomic类,其核心就是CAS机制,CAS机制三个操作数——V内存地址、A预期原值、B更新值。这些大家都会。但我在讲CAS时,我会讲一下CAS的实现主要是通过 Unsafe 类中的 compareAndSwapInt(this, offset, expect, update) 实现的。this代表对象的指针,offset表示该属性在对象中的偏移量,this+offset刚好是CAS中的V内存地址,expect表示A预期原值,update表示B更新值。当时有一个面试官看我这么回答来了一句:嗯,准备地挺充分的。我姑且认为这是一句夸奖吧

不止是八股,做算法时如果能给面试官一题多解的话,我觉得面试的效果也会不一样。比如经典的两个线程交替打印FooBar的问题,大部分人可能就是想到用synchronized或者ReentrantLock,其实这题的解法有很多种(具体可以看 1115题 的置顶题解)。

再比如之前字节面试的时候出过一个比较复杂的循环依赖的问题,我当时也是思索了一下给出了两种解法,感觉面试官反馈还不错,第二道算法题也是直接给了相交链表,写完就愉快地结束了(bushi。

5、运气

需要承认的是,我拿到这些offer确实有很大一部分要归功于运气成分。尤其是美团三面的时候,面试官跟我聊了半个小时密码学的项目,希望我给他把这个项目的细节和我的贡献细节给他讲清楚,我相信这对大家来说都是非常容易的,毕竟就是讲自己的项目嘛(这可能要归功于密码学了,毕竟面试官不懂,所以项目上就会问得很简单,给面试官科普就可以了)。聊完之后跟我说:看你经常用位运算,给你出一道位运算的题吧,然后给我出了一道模重复平方算法的题目,即使不学密码学,刷过这道题的同学应该也能轻松写出来。反问阶段,我问他为什么对我密码学的项目感兴趣,他说他本科最好的哥们研究生去做了密码学,所以他对密码学非常好奇。我内心:buff拉满!

再就是快手二面的时候,那个时候我还没学设计模式,但是我在牛客上 搜那个岗位的面经 ,我发现很多人都被要求写单例模式,所以我就在面试之前把单例模式相关的内容都看了一遍,结果还真考了......

还有TP-LINK三面的时候,同样遇到了对我密码学项目感兴趣的面试官,结果面试结束的时候面试官跟我说,他其实是我同学院同专业的校友

我秋招阶段无数次经历过跟舍友同时面试,但都是他先推进下一轮的情况,“其实这都是运气好”,这是他安慰我说得最多的一句话。后来我复盘的时候发现,他有的时候运气是好,但他又何尝不是在运气到来之前做足了准备呢。所以我觉得,我们需要运气,但不能依赖运气。

写在最后

说实话,能读到这儿的朋友我是很感激的,因为我写到这儿总感觉前面敲的都是废话,感觉更像是自己写了一篇流水账的日记。介于此,我先放两个比较有用的链接:

*********:所有Java的八股我都是在这里背的,剩下的都是在尚硅谷学的。

********:超全的八股整理,甚至计网和OS我只看了少部分就足以应对面试了。

自始至终,我都在这两个网站去背八股。基本上就是先背*********,背得差不多之后再去********上查漏补缺。我个人的感觉就是八股背得多不如背得深入(当然又多又深入是最好的,可惜我做不到),因此毕竟每次面试的时间就1h,项目聊15min,写题写15min,有的时候八股的时间也没有那么长。而且有的时候我们对一些面试官在意的问题理解深入的话,其他问题不太会他们其实并不在意。

另外,面试技巧终归只是帮我们拿到offer的途径,缺少的技术栈该补还是得补(已经在补Spring了),算法该练还是得练。毕竟,拿到offer只是我们的开始,不是结束。

#晒一晒我的offer##无实习如何秋招上岸##找不到实习会影响秋招吗##24秋招求职节奏总结##没有实习经历,还有机会进大厂吗#
全部评论
🐮,听劝已经超过90%
16 回复 分享
发布于 01-19 16:13 北京
大部分人还是模仿不了的,老老实实做项目吧。。。毕竟双中9还是少数
6 回复 分享
发布于 01-21 13:19 山东
为什么最后两个链接被和谐了,是https://javaguide.cn/和https://xiaolincoding.com/
5 回复 分享
发布于 01-18 17:16 北京
太强了鸽鸽👍🏻,不过明明bg是双非硕,怎么偷吹是985😤
3 回复 分享
发布于 01-19 15:25 北京
m
2 回复 分享
发布于 01-21 09:02 江西
有2个链接没看到,佬可以说一下吗
1 回复 分享
发布于 01-20 18:40 浙江
大佬最后去哪儿了?
1 回复 分享
发布于 01-20 22:31 北京
研二,同密码学方向,感觉大厂相似方向岗位好少,方向对口的企业薪资少一半,打算刷刷题先找个热门一点方向的实习了
1 回复 分享
发布于 01-21 11:43 天津
收藏了哥
1 回复 分享
发布于 02-01 16:49 重庆
点赞 回复 分享
发布于 01-18 16:08 广东
点赞 回复 分享
发布于 01-18 16:15 北京
写得太好了哥,受益匪浅
点赞 回复 分享
发布于 01-19 11:26 北京
🐮
点赞 回复 分享
发布于 01-19 12:56 北京
点赞 回复 分享
发布于 01-19 13:11 广东
佬太强了
点赞 回复 分享
发布于 01-19 22:02 湖北
点赞 回复 分享
发布于 01-20 15:44 上海
恭喜
点赞 回复 分享
发布于 01-21 13:02 湖北
25届——1月份才开始准备,想开学找个实习。希望来得及哇
点赞 回复 分享
发布于 01-23 15:15 新疆
鸽鸽好猛
点赞 回复 分享
发布于 01-24 17:44 北京
惰性不允许我迭代这么快
点赞 回复 分享
发布于 01-26 01:44 北京

相关推荐

从秋招角度来说 没算法基础想去互联网大厂不刷力扣很容易白给 但是有可能也会直接给签到题 但是一般出现简单题也写不出来就寄了 因为这种没通过面试是不是很可惜从暑期实习来说 我碰见的都是top100以内的easy mid水平的题 基本露头就秒日常实习 有几家大厂没让我写算法题 权重偏到了js手写题和读代码题(this指向,promise顺序)但是估计字节指定会让你写算法题哈哈说说具体需要刷什么题,和刷多少题我本人是优先背诵了codetop选前端降序 除开hard(接雨水我能背🌚)之外高频下来的八十题和hot100的大部分基本没有出现没背到的 感觉也就是有质量的一百道就能应付大多数场景了 所以uu们别在懒惰了 背背很快的 难度比后端要求的低太多了已经[捂脸R]有同学问 我不会做怎么办 我没做过(背)我很多也不会 这种mid和easy 基本上遇见了 多刷几遍 基本上没啥问题 一开始可以找一个容易理解的题解去看懂 然后以自己的方式写出来 后续就是多背 多写 多看此外 还有很多问能不能用c++,Java,python刷题的,求你了 用js吧 我知道一开始用起来很难受 因为我就是cpp转前端的[皱眉R] #现在前端的就业环境真的很差吗#  #牛客创作赏金赛#  #实习,投递多份简历没人回复怎么办#
点赞 评论 收藏
分享
评论
118
576
分享
牛客网
牛客企业服务