笔者就读于杭州师范大学(世界上最好的大学),感谢在这里的三年,遇到的同窗和导师!前端
笔者在大二开始自学 Web 开发,大二上学期作的 Java 后端,大二下学期转前端,和导师作了两个商业项目。vue
从今年二月初准备简历,开始复习整理知识点,投递了字节
、腾讯
、阿里
、百度
,经历大大小小的面试,最终到 4 月 17 日 接到阿里盒马意向书已经两个半月了,期间也经历过 burnout 的阶段,不过结果仍是好的,如今但愿经过这一篇文章,将大学里最重要的这两个月总结一下,也给你们作一些原创的分享。node
截止至发稿,目前react
我会按照首次(一面)开始的顺序来写,腾讯 PCG,字节抖音,阿里投递的 BU 比较多,最后是百度统招(部门未知)。linux
为何是这个顺序?由于个人春招,准备和投简历是同时开始的,也就是说我刚开始是比较薄弱的,知识点没复习,面试经验不够,这些都是一边面试一边总结出来的。webpack
二月中旬面试,当时仍是个小菜鸟,面试官很 nice,一直鼓励我,说个人项目经历丰富,愿意多挖掘我一点。我当时怕是对“挖掘”二字有什么误解,居然还开开心心说了个“好哒”。后面对于当时仍是菜鸟的我简直就是炼狱难度。nginx
如今再回头看这些问题都没那么难啊(扑哧…),可是当时回答磕磕绊绊。这就是一个教训啊:早点开始准备实习面试!!!git
一面完没过几天来二面,这是一轮压力面,面试官语气很严肃,时不时会用责备的语气来讲。当时仍是小菜鸟,不少问题是第一次问到,特别是源码和原理还没来得及复习。程序员
面完后很是沮丧,可是问了下内推小姐姐我居然过了…github
第一次视频面试,发挥不是很好。
面试官给人感受很好,是广东口音,就是电话声音不太清楚,最后转到 QQ 语音。面试题量很大,可是很是深刻的问题并很少。
到这里我 React 原理已经准备的差很少了,没想到二面面试官并没问 React 原理…
其余问题因为失误没有记录下来。
面试官是个知名大佬,我说话都哆嗦,发挥不是很好。问题也有很基础的,出乎意料。
没记录。
印象里题目偏难,不少是常规题的进一步深挖和扩展,以及场景题。
笔试题比较开放,作一个 webpack 可选链,我看成完整项目来写,评价不错。
一面是位主管,说话比较快,给人感受比较严肃利索。并且一开始聊了不少非技术问题,结尾又和我聊了好久菜鸟的业务和发展,聊下来感受很好,而且在以后常常打电话回访个人状态,问我几个 BU 的选择,感觉到主管的关心。
面完后直接告诉我,我经过了,明后天会让他的同事来重点考察个人基础,让我好好准备下。
真的全问基础,没有涉及项目的问题。可是回答的时候最好结合本身的实际经从来回答。好比闭包,我结合本身项目里用到的场景来辅助。
自我介绍
谈谈职业规划
你刚才提到想作架构,你说说你对前端架构的理解。(从前端历史角度谈先后端分离,前端工程化框架,自动化,CI/CD,前端监控、埋点,设计模式,负载均衡,缓存,kafka 到数据库等等聊了十几分钟,角度比较多)
你还有什么问题?
面试完以后,一面面试官打电话来讲我过了,会将我录入系统,直通终面,提醒我到时候确认。
盒马是流程最长的一次面试,先后大约有一个半月,可是面试下来感受很好,和盒马面试官也比较搭。我看好盒马多样化的、全链路的业务体系,因此选择了盒马继续终面,最后也拿到了 offer。
主要问了 React
面试官是天猫 P9
一面是个高冷的小姐姐面试。
二面开始偏项目了,也是小姐姐面试。我有些题目答很差会尬笑,她也会一块儿尬笑,哈哈。
三面是个瘦瘦的大叔,应该是相似总监通常的人物。头发不多,说话很温和,称呼我都说“您”,好感度 upup。不过无论是哪家大厂,总监面都会说到性能监控和埋点,以及性能的量化,小伙伴们好好准备呀。
面试官评价本身还不错。
玩计算机是我小时候的理想吧。
小时候因为家庭工做缘由,比较早摸到了计算机,开始打暴力摩托 1998,玩红警,和老爹同事偷学计算机维修技术,初中作了三年电教管理,高中把教室里的计算机拆了个遍(没少挨骂),而后开始迷恋硬件 DIY,高二才终于组了本身人生第一台 PC(多谢爸妈打赏),高中学了学 VB,浙江技术高考拿到满分,大学顺利就读计算机科学与技术,正式入坑编程。
2017 年入学,大一也迷茫,每天刷知乎找方向,看行业动态。先跟着课程学吧,学 C 语言,刷题,参加 ACM 集训被吊打,发现本身算法搞不过各位大佬,因而转而去研究人工智能深度学习,跟着吴恩达的课程看一看,学Python
,装 TensorFlow
开始作 Demo,最后搞了个教务系统的爬虫,能自动识别出验证码登陆。
大一快结束了一看,不对劲。这深度学习搞下去都是数学啊,本身几率论都还没学,看论文脑袋疼,深感这东西凭本身的能力自学不了,得有大佬来带我,还要有钱!没钱你 CPU 跑模型玩呢,看人家 GTX1080Ti 跑的的多快。我没钱没资源没老师,当即推:学这玩意儿先考研,去名校。
这个时候规划了一下这几年,我要进大厂。那要不要考研呢?既然考研仍是为了进大厂,那我为何不本科就冲一冲呢?另外我对考试这东西不擅长,考不过别人,我喜欢实践,动手。
好,继续查查别的路径。这时候刚好遇到个Java Web
项目,用的是JeeSite 2.x
,能自动生成代码模版的那个,我靠,有项目作,仍是能够上线的商业项目!赶忙自学 Java,配 Java Web 环境配了好几天,顺便学了翻起昂,jQuery
。吐槽下,这是个历史遗留项目,配环境极其困难,由于要去找老版本,tomcat
、Maven
和Java
之间彷佛还有某种奇怪的版本对应关系,一开始还不知道,瞎配,我吐了。
这个项目最后学长学姐带着咱们作好了,历经坎坷,虽然给别人打工却一分钱没拿到,可是帮我打开了新世界的大门:Web 开发,这个挺有意思。
因而大二开始,再次改变路径,正式入坑 Web 开发。自学Java
,Spring
那一套,入门有点儿困难,可是理解了DI
和AOP
就有种顿悟的感受。顺便把数据库了解下,前端再套个thymeleaf + jQuery
,我第一个网站就出来了,是个图书网站,相似豆瓣读书那种。
经过Spring
的MVC
,又接触到了设计模式。因而看书《Head First 设计模式》,了解了什么单例,工厂之类的。学了一个学期,网站没作几个,Java 课程设计却是写的还行,用的是 Java FX,原生支持 MVC。
大二上学期结束以后,我遇到了如今的导师 L,咱们聊了不少,很谈得来,我也很想去他的实验室,跟着他学习。可是 L 导师有个要求,前端用React
,后端用Node.js
。我 Java 学了一个学期了,哪是那么容易放弃的,我就说,我三个一块儿学。
真是一入前端深似海,和我以前的模板+ jQuery
写网页彻底不同,这组件化的开发方式深得我心。Node.js
轻量点,先后端语言统一,代码相比 Java 少一点。后来在使用方面,Node
愈来愈多,Java
也就没有继续学下去了。
如今回忆起来,当时面临选择Java
仍是Node.js
都纠结万分,如今看来实在是好笑 ,不就是门技术吗,搞得生死离别同样,须要什么学什么不就好了,反正都会冲着全栈去的。想起《人月神话》里一句话:“没有银弹”。
而后学了几个月React
,就跟着老师两我的作项目了,作完以后本身和同窗捣鼓了一个笔记分享平台,以后又接了一个新的项目。这下导师让我和甲方接需求,设计原型,设计数据库表,系统设计先后端,也挺有挑战性的。
以后放寒假,这里还纠结了两个月考研的事情。而后就是奇幻 2020,赶上疫情,2 月初开始春招找实习了。
写到这里,再点缀些许感想:
学会放弃:若是发现本身确实不适合作某件事,早点放弃,也须要一份勇气。对我而言,是否放弃一件事情,最关键的是,我作这件事是否感觉到快乐,我是否真的喜欢这个。可是 ACM 集训的时候,对着一套套算法、一套套模板我真提不起劲,不合适,换方向!人工智能,深度学习,要钱要资源要导师,没有,换方向!Web 开发,是本身的菜了,本身喜欢前端,坚持下去!
没有白作的事情:放弃了打 ACM,那段时间就一无所得吗?首先我意识到本身不适合走这条路,自己就是一种收获,最起码代码能力总加强了吧,思惟能力也有锻炼,敲代码手速提高了很多;接触了深度学习,也让我在最后一个项目中直接用上了人脸识别;自学了Java
,Spring
框架,让我接触到了SOLID
原则,设计模式等软件工程学知识,直接让我萌发了作架构的想法,让我更注重代码质量,系统设计,以及往后的维护性,伸缩性等,也让我在用Node
作后端时,快速上手 express
、koa
等 web 框架。更不用说这些东西对于我课程、绩点等等的帮助了,只要是软件开发课程,都是满绩。因此“白作”的这些事情,提高了个人知识广度。软件开发,总有一些东西是不变的,一通百通。
我的以为面试,除了一二三面这个角度,能够换一个角度来看,分别是简历关、能力关、表达关和潜力关。
美观这个事情,也看人的,审美不一样嘛,我我的直接用 typora
写MarkDown
,而后输出成 PDF,黑底白字,放几个蓝色的超连接。这个网上教程也不少,不赘述了。
GitHub 要多点绿啊,或者首页挂几个本身的得意之做,博客也更新几篇技术文章吧,技术文章彻底原创有点难度,写一写本身学习下来的感悟也不错的,总之要体验出本身的持续热情。
项目能访问,这个隐含的东西可多了。若是这个是你本身作的,这说明你起码舍得为技术花钱、会配置服务器、会部署先后端项目、有使用 linux 的经验、愿意证实项目是真的而不是嘴遁。
基础:这个没啥好说的,刷面经,啃书,看别人的面试总结文章,你本身画一个思惟导图来查漏补缺。
项目:项目要有难点吧,有的同窗会问了:我没难点咋办啊,无中生有也能够嘛。虽然可能需求就那么多,可是你能够继续精益求精一点啊。好比很简单一个图片上传,可能你以为行了,需求知足了,可是你在掘金随便一搜“上传”,一大堆业务需求就来了呀,什么大文件上传、断点续传、H5 上传、上传前预处理等等,随便一个都是常见的难点呀。
另外,既然是面试,就须要针对面试好好准备,即便平时水平很强,可是不少问题不专门花时间复习和总结,面试仍是很容易翻车的,也会影响表达。
主动交流:不会就说不会,不要嗯嗯啊啊半天浪费时间,能够的话问一下“您能够给一些提示吗”。若是本身以为有思路,可是一时半会不知道怎么说,就先说“能够给我半分钟思考一下吗”。
基础和项目穿插:问到基础能够穿插项目,这样才真实,而不是个只会背答案的复读•莫得感情•机。随便举个例子,好比问到状态码,你说“⋯⋯301 重定向,我以前作的一个项目地址改了,因而在 nginx 里配置的时候就用到了 ⋯⋯ 它和 302 也是有区别的,⋯⋯”。
注意,面试官问你为何选择前端、你在项目中的位置、你对 XXX(技术)的见解的这些问题,可能就是在考察你的潜力了。
这些问题我不想也很差给出什么答案或者套路,每一个人状况都不一样。建议结合自身经历提早准备一下。
我总结的一句话就是,学习的路子要广,学完了要有总结和输出。
Google
搜索英文关键词,若是你看到Stack Overflow
这个字眼,那么你离解决这个问题已经不远了。最后,试试工具—时间
设置,保证本身搜到的东西比较新。GitHub
搜索,知乎搜索、B 站搜索、微信搜索以及淘宝搜索。我我的喜欢官方文档、YouTube、Google、国内各类论坛、GitHub、B 站这个顺序来找资料学。互联网这么发达,资料实在是太多了,每一个人的习惯也不同,参考参考就好。其次,国外也有不少好的论坛,好比 Medium;YouTube 也有不少conf
能够看,还有超多的入门教程,用英文关键词搜索就行。
另外要注意的是,掌握了正确的搜索姿式,却也不要搜上瘾了,找到了不错的、比较新的资料,就能够开始学习了,不要一直想着再搜搜看有没有更好的,这样永远不会开始学了,收藏夹里资料却是一大堆。
前端开发的书单不赘述,知乎豆瓣掘金都有不少推荐。
咱们作前端开发工程师,除开前端开发,首先是工程师。我不想只是搬 🧱 的,平时会看一点别的书。
还有其余的好书,能够评论区推荐一下哈。
第一层:学完一个技术,能作个“调包侠”,作出来的东西能跑,知足基本业务需求;
第二层:要求本身去学习所谓“最佳实践”,能写出高质量、高性能、可维护的代码;
第三层:打入底层,了解原理,能作优化;
第四层:不只能作好细节,并且能作系统整体架构的设计,这对知识广度和深度都有很高要求。
这里碎碎念说几个点:
咱们天天吃饭的工具—PC,win/macOS 熟练否;
编辑器:快捷键、各类提高效率的插件、代码检查、格式化等等;
linux 常见的几个命令;
版本控制 git、以及 GitHub 熟不熟练;
chrome 的调试技巧、性能检测工具、好用的拓展工具;
…
还有 postman / navicat 等等好用的工具,这些东西会极大提高咱们的工做效率。
学习和遗忘做斗争,忘记是正常的,因此咱们须要记录下来备查。
另外,学习效率金字塔告诉咱们,能像老师同样教授给他人是效率最高的方式,也就是作输出。下面给两个可操做的方式。
github pages
了解一下,本身买ECS+玉名(敏感词)也能够,能够搭配 hexo
、 vuepress
或者其余的,vuepress
适合整理大量的文档,好比面试题等等。固然技术不重要,关键是要写,博客作的再好看不写也是白搭。学习这件事和这两年的经历,其实远不是短短几千字能够写完的东西。单是搜索效率那一块就还有不少东西能够写的。
这篇文章的目的仍是总结本身的面经,分享学习经历,能帮助到你们一点点笔者就很知足了。本身也会不按期将写一些原创文章,能够关注一下。
收拾行囊,继续出发。