文章目录
- 一、求职准备篇
- 1.1提升技术水平
- 1.1.1学什么?
- 1.1.2怎么学?
- 1.2做项目
- 1.3做简历
- 1.4找实习
- 二、求职难度篇
- 找实习难不难?
- 笔试
- 面试
- 三、实习内容篇
- 新人入职 -- 学会看代码
- 参与小需求
- 实习日常
- 实习到底难不难?
- 四、总结
一、求职准备篇
1.1提升技术水平
重点巩固所学语言的语法基础:内存管理、智能指针、多线程/锁机制、STL底层实现等。
熟悉计算机四大件:TCP/IP协议栈、HTTP/HTTPS、堆、二叉树、进程管理、文件系统。
了解常用中间件:Redis缓存、MySQL索引与事务
1.1.1学什么?
技术主要分三点,我按照我认为的重要程度依次分为:算法,技能,项目。
- 为什么算法排第一?
如果大学三年什么技能比如mysql,redis等等啥都没学,但有ACM金牌,那进大厂“稳”了,这不是夸大其词,有事实根据。但是又不是每一个人都能在算法这条路上取得成就,因为算法不是“是个人”就能整明白的,算法这东西花了大量时间都不一定有好的效果,需要时间,需要智商,需要悟性。所以要有业务技术和实习来补充。 - 算法很重要,他是进面的门槛,笔试过不去没有面试机会,如今it厂对于算法的要求越来越高,问题来了,算法真的这么重要?算法对于以后工作有用吗?我大一大二年少无知,认为这东西没用,工作都不一定用得到,等我实习了,我发现这东西确实用不到,如果你只是做应用开发,那你也许一辈子都不在工作上用到如动态规划,单调栈等等的算法,问题来了,大厂为什么考?这玩意儿真的没用?我在实习的某一个瞬间突然意识到,这玩意儿有用,而且意义很大。原因:一个新需求/新bug给到你手上,怎么解决?首先干什么,其次干什么?以什么样的方式解决?能不能解出来?花多少时间解出来?是否似曾相识?算法题是不是这么个思路?有没有了解过这种算法?遇到新问题是否可以根据复杂问题抽象出算法模型?是否可以建立解决问题的思路?是否可以根据思路编码?考察算法,是面试官一个相比之下可以检验你分析问题、解决问题、编程能力的最佳办法。我们需要认识到学习算法这件事的重要性,只有从心底里认可了这件事,才会去做它。
1.1.2怎么学?
我的学习路线完全是跟着课程来的。
- 技能:C/C++ Linux MySQL QT Redis Docker
如今网上资源很多 学习能力强的人 会学习的人完全可以自学,觉得自己不可以的可以报个班。
课程这个需要完全根据老师的要求来,课听了没有,听懂了没有,听完有没有记笔记?记笔记的一大目的是产出,不管干什么也好,都得有产出,什么都不写,一个劲的听,电脑一关,知识就全没了,换句话说,对一个新知识的get完全不是在课堂上学会的,上课的一大目的是通过懂这个东西的老师把这个新东西讲给你,你把它记下来,然后在之后反复的看笔记,再结合各方知识综合起来,这个时候才学会。知识真的很多,如果有过目不忘的能力,每个人都是天才,听了,把它记下来,隔一段时间复习一下,会有新的收获,有在某个瞬间遇到了或是偶然想到了,再去看看之前的笔记,又是一番风味,这种学习习惯是跟随初高中就应该有的,不管学什么这种学习习惯都是基础。我在备战的时候,之前的博客看了好几遍,每一次看都好像是第一次看,每次看完了都有新的体会。 - 算法:双指针 二分查找 滑动窗口 动态规划等等
这个就是刷题,通过刷题提高,刚开始基本就是答案搬运工,看题–不会–看题解–会了–睡觉–第二天再看–握草我写过这题?不断的刷题,总结算法模型,养成分析问题的思路,先暴力,在暴力的基础上使用数据结构优化,当然这块我自己水平就很低,好的建议网上多的是,有选择的看,重要的是练。 - 项目:直接copy的也好,基于别人的二次开发也好,面试官问到,我们得会,换句话说,把别人的项目整明白了,就是自己的,项目中关键技术是什么?怎么实现的?为什么选择这个技术?有没有优化空间?怎么优化?性能瓶颈在哪?把这些问题整明白,再写到简历上。
1.2做项目
求精不求多,如果是基于别人的项目或是基于老师的项目,一定要二次开发,或者使用某种技术提高性能,最重要的,用专业的测试工具对项目进行一定的测试,压力测试,安全测试等等。
对自己的项目要像对自己的内裤一样知根知底,可以绘制思维导图记忆,也许你做了这个项目但是过了很久才面试,那么大概率你会忘记,面试前在看一下。
有时间可以多做几个项目,不管是对于自己技术能力的提升,还是日后参加工作,都有大大的帮助。
让你的码云像大佬的码云,先不说技术水平咋样,你得弄得像个样子。多的不说,写个readme。
1.3做简历
不要用模板,网上的模板层出不穷,但是都有一个通病,一眼模板,规规矩矩,就是看着不舒服,自己搓一个,用ppt,word上的图形,手搓一个不是难事。我花了整整一天的时间做了一份简历,自认为很好看,对你没有听错,技术也许不牛,但是很好看。如果你的审美真的很差,那还是看着别人的模板做吧。
简历上的内容要精简,不要啥玩意儿都往上写,什么社团奖学金运动会,我认为就只用写技术水平就行了,技术面没人关心你多帅!hr面的问题才是看你是不是一个优秀的合格的会沟通的三观正的人。技术相关内容也要突出,不要啰啰嗦嗦。
最后是排版要合理,要简洁。
1.4找实习
- 如果是大一大二,并且把该学的都学了,可以先从boss投小厂,面个几家,看看流程是什么,锻炼一下,找个日常实习,前提是该学的学完了,学会了。
- 如果是大三,多偏向官网投大厂,在有了实习经历的基础上,简历通过几率提高,无论是日常实习还是暑期实习都要偏向大厂投。
- 这里要给大家一个建议,超级小厂尽量不要去,如果整个公司规模不超过30人,那么大概率这个公司的机制是这样的:人少名气低,不知道从哪接了个项目,招大量的实习生当作正式员工用,不行的走人继续招实习。你的上游也很可能没有产品、设计、技术导师,你接到的需求很有可能是老板的一句话:我需要你做这么一个东西。至于是什么,应该怎么做,做出来是什么样子,不知道,别说你不知道,很有可能老板都不知道该做出什么样子,这样的小厂只有在以下情况才可以去:大一大二把该学的学完了,由于学历原因没有中大厂机会,回家也是打游戏,才可以考虑去这种厂,看看他们的源码,熟悉熟悉也可以。
- 收到面试邀请,记得去招聘要求看看都需要什么,可以考前突击一下,从牛某ke,小某书提供的面经,可以提前看看。
- 包装自己:之前的博客和gitee可以拿出来给面试官看了。
- 给大家一下我的投递,不算多,大家一定要多投海投投到不能再投。
二、求职难度篇
找实习难不难?
如今就业环境差,实际上不是就业环境差,是人太多了。找实习只要你按部就班的跟着老师的建议和路线走,不会存在找不到的情况,即便你是大专。
学历不好,可以通过提升技术水平和找实习提高的,如果学历不怎么样但是实习经历很丰富,简历通过率跟名校是可以相媲美的。
总之一句话,按部就班的干,就一定能找到,而且找到的还不错。平常做好博客和码云的积累。
笔试
在经过了算法训练后,如果自己的算法能力很差,一些大厂的笔试是过不去的,如米哈游,美团,网易,他们的题目难度不是刷几遍leetcode就能整出来的,不信的可以试试,这个没办法,只能把功夫放在平常。
那么算法能力不行就没出路了吗?不是的,有些厂没笔试,以及一些日常实习,提前批都是没笔试的,到那时面试仍然会有考察算法题的场景,这时候的题目难度就是leetcode中等偏上的难度了。
总结:算法训练功夫放在平常,临门一脚了,就只能靠运气或者走没有笔试的场景。
面试
面试主要有几大块:八股 手撕 算法题 实习 项目
八股重在积累,我主要是自己的博客,小林,面经。重点是把别人的话理解成自己的话,并能用自己的话有条理的描述。光看是没有用的,看了不用很快就忘记了。对于一些语法八股最好自己敲敲代码,可理解的更透彻,记忆的更清楚。
手撕,如果你动手能力不强,那就背吧,像背作文一样,分成几点背下来,如果能力强,敲出来也不是难事。常见的:string vector lru 布隆过滤器 堆 智能指针
实习经历:这个平常实习要写好日报,最后实习完毕总结干了什么,用什么技术解决了什么问题,达到了什么效果。要有突出,做过的最困难的,含金量最高的,时间跨度最久的,如何跟上下游协商等。【可以看一下高质量源码,然后说自己做的,前提是一定要整明白,不然面试就翻车了
项目:面试前再看看项目,项目过程怎样的,用到了哪些关键技术,为什么用这项技术,了解其他技术嘛?怎么测试的?性能瓶颈在哪?有没有改进的地方?
面试一定要会复盘,把每次投递简历的记录保存下来,记好每一次面试的问题,面试完后通过各种方式重新思考怎么回答更好。并整理下来,以便之后复习。
三、实习内容篇
新人入职 – 学会看代码
给时间配环境,熟悉源码。看代码的经验:不要随便打开一个文件就看,你会发现你看了一天啥也没看明白,而且看的很累。可以针对一个特定的功能,从数据的最上游或者最下游看,数据是怎么流动的。可以单独看一个组件/模块,该组件模块完成了什么功能?用到了什么技术?为什么要用这项技术?然后画个思维导图或流程图,回归之前的话,干什么都要有产出。
参与小需求
mentor不会把很复杂很关键的任务给你的,一般都是些小需求,在完成小任务的时候不断熟悉项目架构,然后主动给mentor要任务,现参与到大需求,然后看能力独立开发新需求,不要一有不懂的就问,先自己想,搜,真整不出来再问,问的时候要有逻辑,你在做什么,你做了哪些工作,目前遇到的问题是什么,想让mentor帮你干啥。
实习日常
我的实习日常:刚入职配环境,熟悉代码,然后改bug,改bug是一个让你快速熟悉源码的方法,搞明白数据流向,搞明白功能,看看问题出在了哪里。然后是先开发小需求,增加一个小功能,在此基础上开发大需求,建议大家去大厂就是大厂开发流程很完善,从产品提需求,到开发,到联调提测,可以帮助大家很好的了解流程,有时候你的功能开发完了,要等别人一起测,测试时,测试不懂的你要给他讲,再不济就的拉着产品battle,最后一个需求才是真的上线了,当然由于某些其他功能的改动或者脚本改变可能会影响你的功能,要做好后期维护,这大概就是流程。
如果导师不给你高价值任务,你可以主动申请,前提是你有这个能力,不然就是耽误项目进度,可以先看源码,把高质量代码看明白了,就是自己的。
实习到底难不难?
只要你课程学明白了,算法题刷的差不多,基本问题不大。老师教我们的是专属课程的知识,但更多的是学习新知识的能力,实习不可能所有技术你都会,遇到一门新技术,你会怎样去学?可以先去问AI,我要学会这样一项技能,我需要什么前置知识?然后按照官网–有效的博客–实际动手测试来学。
四、总结
从备战到实习,我深刻体会到:技术路上没有捷径,每一步坚持都算数。
初学算法时,我曾质疑“刷题有何用”,直到实习中面对复杂需求才恍然大悟——算法训练的不是解题模板,而是拆解问题的思维本能。当产品丢来一个模糊需求时,我会下意识地开始分层抽象、评估边界条件,这背后正是刷题带来的感觉。
做简历拒绝通用模板,手搓简历并保持更新迭代。hr看简历平均停留时间就几秒,必须让亮点“跳”出来:大厂实习?独立开发?参与过github开源项目?
只要按部就班,找实习并不难,实习过程并不难,当任务比较多时,做好优先级处理,在能力达标基础上多参与大需求。
别因学历自卑,要用实力破局。学历一般进大厂的人比比皆是,这样的人只要存在,你就能成为这样的人,不要不敢想,当然你得下功夫。
如今就业环境严峻,机会永远青睐行动派。