前言
本文用于记录最近的前端学习情况与找实习情况。
首先说一下我的基本情况,目前是研二。本科北京语言大学-信息科学学院-数字媒体技术,虽然是个双非学校,但是各位老师都很好,教学质量高。主修课程包括数据结构、python、C++、网页设计基础、计算机网络、人机交互、计算机图形学、游戏软件设计与开发等,但是说实话,现在已经如雾里看花,关于这些知识都已经模糊了(就好像上了两年大学之后,看高中物理化学之类,捂脸)。由于成绩比较好,然后卷了些计算机设计大赛之类,凑了些附加分,以学业成绩/综合测评均排名第一(1/50)的成绩,拿了保研资格。研究生来到了上海大学-上海电影学院-数字媒体创意工程,研究生的课程多为论文汇报,课程成绩也不再重要,重要是的要发论文。本专业的毕业要求是发一篇sci或者两篇ei。要求颇高,担心无法毕业,于是决定先把论文搞出来,总之也是经历了一些乱七八糟,很幸运的,发出了论文。当然投递第一篇的时候担心中不了,于是很快进行第二篇的工作,第一篇结果出来的时候,第二篇实验已经做完了,遂写完论文,投了出去。至此研究生阶段的小论文硬性要求解决,大论文暂时不着急,自认可以出去实习,准备找工作了。
这个时候已经来到了3月底。而我的前端之旅就从3月27日的一个决定开始了。
我之前出于对游戏的向往,是做unity更多一些,但是本人unity水平就也不高,属于是一个能用吧,做了一些小demo,也是2D内容居多。27号晚上翻看了boss直聘上的岗位,又进行了一些思考。总结而言就是,感觉上游戏unity开发岗比前端岗少些,而unity它似乎也只能做游戏。可能是个人兴趣问题吧,我不大喜欢国内手游,比较喜欢一些独立游戏(如空洞骑士、死亡细胞之类),我想我可能对游戏没有那么热爱,我更想做一些跟生活相关的,更具备实用意义的东西,而且这些也更能让父母家人理解。于是在这天晚上,我下了一个对我而言非常重大的决定——转前端。
在这边要非常感谢我的几位学长学姐(也是做前端开发的),在学习前端方面给了我很多建议和鼓励,鞠躬。
OK,那让我们进入正题。
前端学习路线
学习路线参考:B站【objtube的卢克儿】的视频与他的网站。
- HTML+CSS:之前是在网页设计基础的本科课程上学过,算是有一点基础。HTML复习了一下常用文本标签、属性以及HTML表单。CSS则是复习了几种导入方式、CSS选择器、常用属性与盒子模型。几种布局方式额外学了一下,包括浮动、定位、flex布局、grid布局,了解了一下动画方面的内容,包括transform(translate/rotate/scale)、transition、@keyframe、animation。学习方式主要是看B站的一些视频,弄不清楚的地方会去MDN看文档。同时为了熟悉一下所学的内容,进行了一个小练习,大概是按B站的首页布局,写了一个类似的静态页面。
- JavaScript:由于B站相关JavaScript的视频动辄40+小时,感觉太长且啰嗦,并且自认还是有一些编程基础的,于是这块的主要学习方式是看博客,主要参考的是CSDN【轻松的小希】博客,看不明白的地方也是会找别的博客来看。DOM和BOM有额外再去了解,这边比较推荐B站【锋华前端工程师】DOM视频与B站【锋华前端工程师】BOM视频,言简意赅。同时为了熟悉JS语法,这段时间在leetcode上刷了一些题,大概60道左右,持续时间为:3.29-4.13,半个月左右。
- ES6:JS的新语法,会用到很多,也是面试的重点,一定要好好学。这边我是主要看了B站【小马哥_老师】的视频进行的学习,内容主要包括:let与const、模板字符串、函数相关(参数默认值、剩余参数、扩展运算符、箭头函数)、解构赋值、扩展对象、新数据类型Symbol、Set与Map、数组新方法、迭代器与生成器、Promise、async与await、class语法糖、模块化import与export。
- Ajax:前端必须要掌握的技术,异步请求,无刷新获取数据。主要看了B站【尚硅谷】的视频,讲解的非常细致,内容包括Ajax优缺点、HTTP报文组成、node.js与Express写简单服务器(为学Ajax做准备)、原生Dom方法XMLHttpRequest发送Ajax(包括请求超时与网络异常处理、手动取消请求、重复发送问题等等)、JQuery发送Ajax、Axios发送Ajax、fetch发送Ajax、跨域问题、解决跨域的方法。这块是有跟着敲,做了一些小练习。大约用时1周。
- Vue2+Vue3:开始学习前端框架,之前本科大创用mpvue做过一个微信小程序(虽然现在都忘了),结合看了一些网上的说法,Vue更易上手之类,我选择了Vue来进行学习。这边主要是看B站【尚硅谷】张天禹老师的教程,他是先讲的Vue2后讲了Vue3。个人觉得就使用方面,Vue2和Vue3没有差太多,属于是学完Vue2花那么一点时间了解一下Vue3就能很快上手的。所以如果跟我一样选择了这个教程的同学在学Vue2的时候也不用心急。我学Vue2的时候前期是有跟着敲,做ToDoList案例之类,但后期脚手架部分,Vue2和Vue3差的有点子多,就没有再跟着敲了。这块儿的内容有点多,我就不一一列出来了,可以参考CSDN【梦入_凡尘】博客(但我今天去看了一下发现它要收费了,捂脸,可以找找别的笔记)。这个教程Vue3讲的相对简单,而且教程本身比较老了,2021年的,中间Vue3也有一些更新,因此我也有找一些别的Vue3新特性相关博客与视频进行学习。老师语速比较慢,我2倍速看的,大概花了2周多一点。
- Webpack+Vite:看的是B站【李立超老师】的视频,大概介绍了为什么需要构建工具、Webpack基本配置、Webpack与Vite的区别、Vite的使用这些。具体可以参考【Rachel】同学的笔记。
- Git:之前是用Github Desktop比较多,但是要工作的话还是必须得掌握以下Git的。因此去学了一下,看的是B站【GeekHour】的视频。文档获取可以根据视频简介操作。
- Vue3项目:虽然学了Vue但是没写过项目总觉得不熟练,无法应用,此外,找实习也是需要一些项目经历的,如果只有本科大创的微信小程序的话过于单薄(而且说实话,我真的不记得我怎么写的这个微信小程序了,捂脸)。因此决定跟B站【尚硅谷】贾成豪老师的视频做一个Vue3项目。项目内容包括登录、数据增删改查、菜单按钮权限管理、数据大屏等等。项目技术栈包括:Vue3、TypeScript、Vite、Vue-Router、Pinia、Element-plus、Axios、Echarts。前期项目配置比较繁琐,并且决定使用element-plus按需引入有点坑到自己,尤其是图标方面(捂脸)。文档可以参考【奥斯卡】同学的笔记。项目地址:http://124.223.50.156(用的腾讯云的试用轻量级云服务器,链接可能会挂)。其实并没有做完,做了一半发现有些对数据增删改查的内容过于重复,学不到什么东西,于是跳过了,之后打算慢慢补完。大概花了1个月。
- 前端八股:不要小看八股文,面试真的问了挺多的。而且学习前端八股可以帮助加深一些内容的记忆和一些原理方面的理解,总之还是很有用的!这边我主要是参考CSDN上的一些博客,牛客网的一些面经,以及B站【前端程序员来了】的面试系列视频(当然没有看视频,直接按简介领取了资料看的文档)文档内容挺全的,常见八股都有,有些内容讲的还是不够清楚,会另外再查。非常推荐【Web前端面试-面试官系列】博客,比较后面才找到,我还没有看完,但是感觉写的很好。另外有关互联网与浏览器如何运作方面,非常推荐B站【objtube的卢克儿】的几个干货视频,配合动画讲的非常清晰。
以上路线学习大概是从3.28-5.20(中间五一回了一趟家,因为暑假要实习,大概率不回了)。历时约两个月。
找实习经验分享
找实习渠道:boss直聘、实习僧、各家公司官网。到找到实习为止,boss上68沟通过,19投简历;实习僧18投递,4被查看,2不适合;官网上投递了拼多多、B站、美团、阿里、京东,前端岗都投了,包括暑期实习和日常实习。从5.21开始投递简历,5.24收到第一个爱奇艺的面试邀请,又陆续收到一些笔试测评(包括拼多多、美团、京东、阿里、众安保险),5.27周一收到包括安鹿、B站、美团3个面试邀请。
因为开始投递的时候已经是5.21了,我的想法是实习3个月,然后大概9月去准备秋招之类。所以还是挺急的,当时给自己的时间是到5月底,要是没有好的实习就打算去小公司了。我也了解了一下暑期实习,虽然可以转正,但是流程时间太长了些,需要先笔试,而后经过一二三甚至四面。感觉如果是3月份可以一试,但现在已经5月底了,因此重心没有放在暑期实习上,而是更加偏向日常实习。
个人投实习的感觉是boss如果真的需要人手,如果理你了走流程还比较快。但是上面也有很多是其实并不着急,或者暂时不招只是挂着的,就是不咋理人。此外,如果有比较想去的公司hr理你说要安排面试,然后后面就没消息了的,可以去问问,我是因为那几家我也不是很感兴趣,就也没有再接着聊。新增的岗位会回的比较快,然后有已读的功能还是可以看出一些态度的。实习僧虽然可以直接投递简历,但是理人的挺少的,还容易被标不适合,说实话还挺打击人的。不过我个人感觉还是官网投递最快,如果投的暑期实习会很快给发笔试链接,不过我感觉暑期实习的笔试真挺难的,笔试完不一定啥时候约面试,也有可能做的不好直接被刷。日常的话就是直接约面试,大厂可能会让手撕算法题,得看是什么厂子。emmm,不过这个投递经验可能也与时间、岗位相关,这边只是分享一下这次的投递。
下面是我大概的一个笔试面试流程。
公司 | 5.26 | 5.27 | 5.28 | 5.29 | 5.30 | 5.31 |
---|---|---|---|---|---|---|
拼多多 | 拼多多笔试 | 暂无后续 | ||||
京东 | 京东测评 | 暂无后续 | ||||
安鹿 | 安鹿面试 | OC | 已拒 | |||
B站 | B站面试 | 未出结果 | ||||
美团 | 美团面试<br />(约二面) | 原定美团二面<br />(hr电话OC,取消二面,接Offer) | ||||
爱奇艺 | 爱奇艺面试 | 未出结果 | ||||
阿里 | 阿里测评 | 约面(已拒) | ||||
众安保险 | 众安保险笔试 | 暂无后续 |
拼多多的笔试对我而言还挺难的,3道单选,3道编程。编程环境过于难受了,就一个文本框,还不让切屏用IDE。
京东测评就不说了,当时状态不太好,感觉脑子有点不在转,倒计时有点太快了。
安鹿面试较为简单,常规八股,问的比较少。对实际会用比较看重,问了一些项目,还有一些基础内容比如Vue中的Computed和Watch区别,Git冲突了怎么办这些。
B站面试跟面试官聊的挺开心的,我感觉还阔以,但是结束之后,回过头一看又发现好多没有回答出来。问了很多CSS相关,比如,如何让一个元素垂直水平居中、如何让一个元素不显示以及几个方法之间的区别;微任务、宏任务相关,让看Promise输出,一开始说错了,面试官有指出我的问题,重新让我看,感觉学到很多;深拷贝与浅拷贝的概念,如何实现浅拷贝(我复习的时候更多看深拷贝,忽略了浅拷贝,把它概念搞错了);项目场景,我介绍我的项目,他根据我的项目提出进一步的需求,让我说怎么实现,这个我就不太会了,是websocket相关;还问了前端优化手段(我没做过优化,也是有些一知半解,就说了合理利用前端缓存和精灵图,面试官深挖了一下,为什么精灵图更快)。但是阿B流程好慢,一直没有结果。
美团一面八股文内容比较常规,有些忘了,就聊一下印象比较深刻的手写代码。给了两道编程题,一是用Vue实现一个数字每隔1秒+1的业务,这个我在之前翻面经的时候有看到,使用setInterval嵌套setTimeout解决,但没有深究原理,被问了为什么这样实现,没说上来,面试官稍微解答了一下;二是检查整数是否回文,用字符串方法写出来了,但是空间复杂度O(n),面试官让写进阶,空间复杂度要O(1),没有写出来,以为凉了,没想到吃晚饭的时候就电话约了二面,二面快开始的时候,hr又电话说业务那边商量了一下,觉得我表现的还可以,就让我过了,给了OC。(真的很感动了。
爱奇艺一开始面试官问的比较常规,基本都答出来了。然后20分钟过去,面试官说他基本没啥问题了,但是他们那边想要进行二面,问我现在是否方便,我想反正之后也没有事情,那就一起面了吧。于是答应了,后面这位二面的面试官风格比较独特,他拿着我的简历看到我本科的成绩和主修课程,一门一门开始拷打我,从计算机网络、数据结构、C++到计算机图形学,还有我之前做的Unity。怎么说呢,本科学的真的忘了,然后吧,也没想到会被问,没咋样复习,计网和数据结构还能诌一些,其他的我就是一整个一问三不知了(捂脸)。面完有点小崩,跟朋友嘤嘤嘤去了。
众安保险的笔试也很难,10+单选,1多选,3编程。只有最后一道编程80%,其他都不行。真的要好好练一练笔试会考的东西了,也要好好刷刷力扣。
这么经历下来,感觉自己也蛮幸运的。接到美团电话的时候,都不敢相信hhh,跟hr确认了好几遍,收到邮件Offer才有实感。感觉大厂日常实习比较宽容,问八股文很多。大厂会要求手写代码,这个就只能看自己的算法能力和现场发挥了。说实话刷题成本还是挺高的,有时候一道题写一下午,但还是要坚持。总结来说,算法能力不太行,需要多刷题;笔试考的一些小知识点掌握不够全面,尤其是看代码说输出,会很绕,需要额外练习一下。
在5月找到实习算是完成了我的阶段性目标。在这边记录一下。入职之后应该也不会轻松,而且我也有很多想学的东西,比如React、uniapp、nodejs等等等等。
道阻且长,行则将至。与诸位共勉~