之前印象很深的句话:一个人如果不耕作,就必须写作!
前言&近况 #
春招中有幸拿到了阿里和腾讯的开发岗offer,很可惜最后发现只能二选一。
尽管离前去实习还有一段时间,最近有很多计算机相关的比赛也大量占用了我的精力。想稍停下来复盘,写一下和想一下了。
春招面试 #
在这些面试中收获了很多,同时也遇到了很多很nice的面试官,他们给了我很多的建议,在这里我也将他们分享出来,希望能对今后看到此文的人有所帮助。
前端知识 #
我面试的主要是前端开发岗,先来总结下我了解到的前端开发所必需具备的知识点,可能有所不全,见谅。
计算机基础 #
- 数据结构与算法
- 栈,队列,二叉树,最大最小堆
- 排序算法-快排等
- 查找-哈希查找-二分查找
- 算法-动态规划-贪心-分治
- etc
- 操作系统
- 系统调用
- LRU
- etc
- 编译原理
- 概括:词法分析->语法分析->抽象语法树->优化->汇编/中间码
- etc
- 计算机网络
- 三次四次握手及目的
- 地址栏输入url到加载出网页
- 网络模型
- tcp
- udp
- http 1.0-1.1-2,状态码及含义
- etc
- 信息安全
- 对称加密与非对称加密
- 证书认证
- https原理
- xss攻击与预防
- csrf攻击与预防
前端基础 #
- html
- 常见的标签
- block和inline
- 标签语义化
- css
- 盒模型:基本概念、display、position、float等关键属性
- 布局flex,实现居中
- 自适应,rem
- 媒体查询
- 高级样式:画个三角形等
- js基础
- 基本类型,函数
- 闭包及其应用
- 原型链 - 面向对象
- 函数 - bind,call,apply
- 事件循环、同步、异步
- etc
- js进阶的内容,es6等
- let和var区别
- promise
- async
- 箭头函数
- 迭代器
- etc
- js应用
- 防抖与节流
- 异步程序队列
- 深浅拷贝
- etc
前端工程化/框架/工具 #
- vue
- 单向数据流、双向绑定的实现
- Redux、虚拟DOM
- v-show
- react
- 更新机制
- hook及其原理实现
- 小程序
- 渲染层-逻辑层
- 虚拟dom
- etc
- webpack
- 流程
- nodejs
- 流
- koa
- eggjs
- 浏览器
- v8引擎相关
- 渲染过程及原理
- 缓存机制-强制/协商缓存
- 事件模型、选择器、前端路由
- 性能优化
- etc
上面的内容很多,很难全部都熟练掌握,但是作为前端开发者,至少应该都要有所了解。如果上面出现了你没有了解过的名词,那就要尽快去补习了。
他人建议 #
在阿里的面试中印象很深刻的一句话,是来自于阿里四面时前端leader所说的(记得有点不太清了,就简述下大概意思吧)
在学生时代时学习的很多是知识,但是作为今后步入社会后成为的社会人,需要的更多是技术。技术和知识是不一样的,技术需要通过不断地写代码来进行磨练提高的,人的精力是有限的,要想好自己的发展方向并不断提高这方面的技术
还有其他的面试官给的建议,有些在学习的时候没发现,通过他们的建议发现了自己的缺点并改正了许多
计算机基础知识很重要
前端开发在学习到一定程度后,都需要学习其他领域的知识,才能取得突破,比如我们的评级,初级前端,中级前端,高级前端,前端专家,研究员,科学家(具体可能记不清了),在技术实力发展到一定水平后,title就不会再有限定领域了,当然你自己的领域永远是你的基本盘
使用一个框架或者库,一定要去了解其底层原理与实现,最好有时间的话,可以去读一下源码
初次读一个项目的源代码时要带着目标去读,明确自己想要了解什么,不然容易迷失
一个约定,牢记于心
你的一面二面表现都很不错,也可以看出你对计算机是很有兴趣的,不过你的基础还是不够扎实,你可以回去后在复习一个月,还是XXX,可以帮你再投到我们这里
技术回顾 #
中学-小打小闹 #
初次接触编程还是初中时,当时就对电脑及上面的事物很好奇,同时作为一个gamer,有着想要制作自己的游戏的小梦想。当时就接触了rpgmaker,flash之类的制作软件,了解到了游戏脚本的存在。
至今还记得,当时用window xp系统,还用dos命令写了个bat病毒脚本,可以设置自己开机启动并,自我复制和有限传播。
大学-进入科班机缘 #
其实我刚刚上大学时并不是计算机专业的学生,而是一个很多人可能都没有听过的专业船舶与海洋工程,其实也并不是没有兴趣,作为一个军迷,还是很喜欢海军,军事方面的东西,不过在深入了解这个行业后,被行业的就业情况和行内人士劝退了。
所幸学校对于学生专业选择的态度非常开放,我有机会在大一下转专业到计算机,并且在专业分流时选择了软件工程专业,从此正式进入计算机科班专业学习。
科班-正式的学习 #
很多科班的课程的学习和训练就不细说啦
我印象比较深的课,都是需要写很多代码的课:
- 面向对象程序设计 - (大一下跨专业选,急急忙忙补习cpp)
- JAVA多线程综合实验 - (纯代码手写一个基于java swing gui的client,一个多线程的server)
- 数据结构综合实验 -(现学Qt写了个连连看 Github)
- 汇编程序设计 - (8086 asm实现三种排序 Github)
- 软工实训 - (作为小组组长带着一帮小伙伴开发一个问答机器人) Github
- 数据库大作业 - (写了个论坛,又当一次小组组长,不过基本没写代码,主要出数据库设计,api文档和救火)
像数据结构与算法,计组,操作系统,编译原理,计算机网络这几门超级重要,感觉可以终身学习。
2019年中初次接触前端,了解了GitHub这个神奇的地方,还开始在w3c上学习,写了很多静态项目,了解到了bootstrap等,后来继续学习中接触到了jquery,初次实践时写了个2048,当是感觉学到了很多,但是后来才发现这其实这是前端初级的一小部分。
lfx大佬建议:MDN文档好好看
后来确实收获甚多。
中间折腾过很多东西,Ubuntu,deepin,wine,深度学习,openCV,etc。
2020中旬开始接触后端,2020疫情在家时,当时为了写一个计算机设计大赛的比赛,去了解了后端相关的知识,当时我对于前后端的概念还没建立起来,至今上手了django,这是我当时第一次独立自己设计并完成一个完整的软件产品,GitHub仓库 LearnPython,完成后感觉收获还是挺多的。
2020下半年,了解到了前端工程化,js的高级知识,被xgp醍醐灌顶的说了一通,才发现自己前端学习的还永远不够,基础不牢,地动山摇,还需要继续学习,于是寒假期间开始恶补基础知识,跟着c4项目手写c子集编译器,并且有幸加入了字节跳动的寒假前端训练营,系统性的过了一遍前端的知识体系,在这个训练营,还有机会写一个nodejs后端项目,写了很多基础curd,了解了koa和eggjs等,最终还拿到了优秀营员,甚是幸运。
通过2021春季的面试,在不断查漏补缺中,学到了很多,通过面试发现自己的不足并加以学习改正,是个很好的方法。
团队-比赛-项目 #
Token团队,应该是学校里技术最好的团队了,也是最像互联网公司/社团的团队,从产品一路学习,并兼任了技术开发;加入了ACM集训队,和一群很厉害的人一起训练,刷题;和老师联系,接触到了一些比赛和的项目。
写在最后 #
我可能很贪心,不仅仅是前端,我还想更多的学习算法,计算机图形学,人工智能…,并且能达到被业界认可等水平。
路漫漫其修远兮,吾将上下而求索
如果读完一本书,一个文档,抑或学会一项技术后,就觉得自己已经完全掌握,不需要再次学习了,这是最可悲的,写在这里,希望警醒今后的自己。