今年毋庸置疑是找工作的寒冬,今年出来找工作的每一个同学 都是值得尊敬的。 在寒冬季找工作,虽然略难,但是反过来看也会逼迫我们成为更加优秀的自己。
但是不管是旺季还是寒冬,有一些优秀的同学找工作还是挺顺利的。 所以说还是得提高我们自己的硬实力。
今年前端很明显一个变化就是前端面试里除了基础知识 也添加了很多手写算法以及前端递归小程序。 下面从若干个方向谈一谈需要准备些什么东西。
面试之前要复习自己所有的基础知识。 算法比较难准备,要提前几个月来看。 基础知识相对容易准备,可以相对延后。 算法可以陆续把leetcode上简单的题目都做一做。 基础知识按照自己的脑图来准备。
在准备好了之后,可以看一下网上的面经,如果对于面经的大部分问题都可以答出来。 那么就是一个准备了差不多的信号。
此时可以找一个朋友给你来一个mock interview。 朋友的mock可以给你很多反馈。 自身发现不了的,包含自我介绍的问题,语气语调,自信心等问题。
接下来可以找一些小公司练练手。 练习练习自己讲讲项目,和基础知识的查漏补全。
如果拿到了一些小公司的offer,那么就可以找朋友推荐去一些心仪的大厂,大厂面试相对较难,所以最好找朋友内推。 内推有朋友可以给你介绍很多你不知道的东西。
作为一个高级码农,项目肯定做的非常多,但是简历也要注意什么可以写什么不能写。 自己复习准备不深的东西最好不要在简历上写,面试官往往都问自己有经验和自己有深刻研究的东西,如果你涉及的技术只是简单使用,简历上写了,被问到一些底层原理,结果没答上来就尴尬了 。
比如你在公司浅尝辄止的做过RN,简历上写了,被面试官问到RN的原理,打包,和Native通信等,如果没有准备就会非常尴尬。 简历上写的技术 最好都复习到任何细节。
比如用vue写了好几年项目了。 以为自己掌握的滚瓜烂熟。 结果别人问了一个基础的Vue生命周期,Watch和Computed的区别,如果没答好,那么在面试官那里印象就非常差。
今年各大公司都添加了手写算法或者前端递归的题目。 所以要求这部分题目都得提前准备,最好在职期间刷leetcode几个月。 至少大部分简单算法都可以秒杀。 至于前端一些递归和语言特性。 相对来说都比较好准备。 应该2~3周就够用。 这里列举一些高频题。 抛砖引玉一下。
实现debounce
实现throttle
实现bind,call,apply
打印出来html里所有标签
实现一个lazyman
实现一个deepclone
实现快速排序
实现一个数组乱序
实现一个Promise
实现一个LRU
求第K大树
二叉树的深度
两数之和
四数之和
找出一个集合所有的子集
手写题系列请见 2019-大龄前端如何准备面试之手写题
flex 已经是移动端的标配了。 今年面试中基本很多都考察flex。 所以对于flex-grow和flex-shrink,flex-direction 这些属性必须灵活掌握。 而且对于弹性盒里面的元素的是否会被缩减,以及缩减的规则都会被考察到。 对于高级前端一些深度的特性也会被考察到。
vertical-align 为什么没有绝对垂直居中?
line-height 的具体含义是什么?
http2 是今年一个必考题了。 所以HTTP2 分帧的,多路复用,server push 这些都得深度掌握,只肤浅理解到基本概念 还是很容易被问住的。 推荐大家看两篇文章
MDN HTTP
Google_HTTP2
另外缓存(协商缓存和强缓存),跨域 这些都不赘述了。
http2有什么改进?
websocket协议和 HTTP2 有关系么?
http2 和 1.1 的 pipeline 有啥区别?
HTTP2 和 1.1 的 keep alive 啥区别?
现在是Vue和react的时代。 小厂追求糙快猛基本都是Vue。 规模大一点的公司基本都是React。 不管是哪个。 今年面试绝对不紧紧停留在表面,dom Diff,Virtual Dom 成了必考题。
Virtual Dom 是否可以提高性能?
怎么看待Dom Diff? Dom Diff算法是啥?
如何设计一个组件?
Vue发展问题在哪里?
错误收集也是一个点,有可能会考察到各种情况出现错误的情况。
Node中的错误怎么捕获?
Node中遇到错误,进程退出了怎么办?
Promise的错误如果统一捕获?
Promise中的ajax 可以try catch 到么?
如何实现一个前端错误收集系统?
Web性能啥时候都是一个必考题。 针对Web性能。 推荐大家看 Google的文档(需要翻墙) 。
webpack 基本会考察到各种loader,plugin的名字和使用方法
用过哪些插件?
如何做性能优化?
code split 怎么做?
什么是treeshaking? 注意些什么?
JSBridge 原理 和 离线包成了必考题。
移动端如何做适配?
一像素问题怎么解决?
JSBridge原理是什么? 如何设计一个JSBridge?
离线包怎么设计?
Hybrid H5开发需要注意些什么?
Webview的缓存机制是什么?
直播协议都有什么?
WebRTC是什么? 基本原理是什么?
高级码农都或多或少写过一些nodejs。 但是nodejs 的面试问题很难准备。 平时可能写的很6,但是面试不一定能答得出来。 通常大家都会问你的Nodejs在处理什么模块。
项目中的中间层Node 在处理什么问题?
Node 的Cluster模式是什么?
Node 中的进程和线程啥区别?
Node 中如何创建一个进程?
Node的多个进程如何通信?
Koa2 中的 context如何实现?
如何监控Node?
Node中的日志如何保整串行?
Node 挂掉怎么办? 怎么发现其中的问题?
Node中的事件循环是什么?
HTTPS原理是什么?
如何劫持HTTPS?
XSS 是什么? 如何防范?
CSRF是什么? 如何防范?
如何应对重放攻击?
对于一些同学,走到高级阶段或多或少有一些管理人的经验。 综合看来这部分不是那么重要。 各大公司还是以技术为主。 考察这方面相对较少。
你怎么管理你的团队?
怎么做code review?
你对管理的理解是什么?
你怎么打绩效?
对于绩效比较差的同学你怎么沟通?
你如何来激励你的团队?
有没有遇到一些管理的问题?
你对前端发展趋势怎么看?
最近接触了什么新的技术?
对于大部分普通人,最好能有一个大厂的经验,一方面大厂做东西会相对较深,另外一方会有很大加分。 当时我也承认小公司有很多能力很强的人,但是非常多的面试官都是学历控和大厂控。 有了这样的经验,找工作起来就会相对容易。
谈一谈工作的延续性。 工作了一些年之后,我们不管做前端还是后端最好和一些业务或者技术 结合起来,两份工作,或者三份工作有一定的延续性。 比如你做直播,那么往后就继续做直播。 你做招聘系统,下来的工作继续做招聘系统。 你做广告系统下一份工作就继续做广告系统。 这样你的积累就不仅仅在通用技术这个点上,也有一部分业务在,下一份工作就更容易做出成绩。
在说说细节的方向。 前端的技术日新月异,可以大胆的预测5年后,可能也不是vue和react的天下了。 可能我们在用xx框架,那么工作10年的码农 用xx框架 和一个工作2年的使用xx框架区别在哪里? 这是我们大龄码农需要思考的。 所以我们能积累下什么?这些是我们需要思考的。 我认为在前端的一些方向上必须有所积累。 比如 WebGL,Canvas渲染,直播等。 就是以后把自己不要标榜是一个前端。 而是一个WebGL前端,直播前端。 这样才会利于我们大龄之后的发展。
最后附上本人整理的一个前端手写算法的集锦。 如果感觉到对大家有帮助,那么请给个star。 https://github.com/scofieldfan/turtle-rock
很多童鞋可能年后有自己的一些计划,比如换份工作环境,比如对职业目标有了新的打算。当然面试这一关不得不过,大概又不可能系统性的复习,这里罗列一些 重点 面试的知识点和文章,
什么是webpack和grunt和gulp有什么不同?什么是bundle,什么是chunk,什么是module?什么是Loader?什么是Plugin?如何可以自动生成webpack配置?webpack-dev-server和http服务器如nginx有什么区别?
多问问应聘者高层次的知识点,如果能讲清楚这些概念,就说明即使应聘者没怎么接触过 JavaScript,也能够在短短几个星期之内就把语言细节和语法之类的东西弄清楚。
面试比棘手的技术问题要多,这篇文章整理了37个JavaScript基本面试问题和解答,这些仅仅是作为指导。希望对前端开发的你有所帮助!
React常见面试题:React中调用setState之后发生了什么事情?React中Element与Component的区别?优先选择使用ClassComponent而不是FunctionalComponent?React中的refs属性的作用是什么?React中keys的作用是什么?
题目大意为:JS 环境下,如何让 a == 1 && a == 2 && a == 3 这个表达式返回 true ?这道题目乍看之下似乎不太可能,因为在正常情况下,一个变量的值如果没有手动修改,在一个表达式中是不会变化的。
10道JavaScript题目:累加函数addNum、实现一个Person类、实现一个arrMerge 函数、实现一个toCamelStyle函数、setTimeout实现重复调用、实现一个bind函数、实现一个Utils模块、输出一个对象自身的属性
面试开场白总缺少不了自我介绍,一方面是面试官想听听你对自己的介绍,顺便有时间看看简历上的描述,是否与口述一致。另一方面就是看看你简历上做过什么项目,用到了哪些技术栈,一会儿好提问你。
把面试当做学习,这个过程你会收益很大。前端知识很杂,可能实际工作中用到的技术,像框架都是跟着公司的要求走的,像我最近也在看React啦,Vue和React都对比着再学习
vue上手可以说是比较轻松而且简单,如果你用过angular,react,你也会很喜欢vue。vue的核心思想依旧是:构建用户界面的渐进式框架,关注视图的变化。这也是为什么新建的文件是结构是template script style
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!