当前位置: 首页 > 后端技术 > Node.js

2019大龄前端码农如何准备面试?

时间:2023-04-03 10:11:32 Node.js

前言对于求职来说,今年无疑是一个寒冬。今年出来找工作的每一位同学都值得尊重。在寒冷的冬天找工作有点难,但反过来会倒逼我们成为更好的自己。不过,无论是旺季还是寒冬,一些优秀的学生还是比较顺利的找到了工作。所以我们还是要提高自己的硬实力。今年前端一个比较明显的变化就是前端面试除了基础知识,还增加了很多手写算法和前端递归小程序。下面从几个方向来说说需要准备什么。面试节奏面试前复习所有基础知识。算法比较难准备,需要提前几个月看。基础知识比较容易准备,可以相对延迟。该算法可以将leetcode上所有的简单题都一个接一个地解决。基础知识是根据自己的思维导图准备的。准备好之后,你可以在网上看看面经,如果你能回答大部分面经的问题。然后这是一个信号,表明我们几乎准备好了。这时候可以找朋友给你模拟面试。朋友的模拟可以给你很多反馈。自己找不到的,包括自我介绍、语气、自信等问题,接下来可以找一些小公司练习。练习自己说项目,检查并补全基础知识。如果你拿到一些小公司的offer,你可以让你的朋友给你推荐一些你喜欢的大公司。大公司的面试难度比较大,最好找朋友推荐。介绍朋友可以给你介绍很多你不知道的东西。简历作为一个资深的coder,肯定要做很多的项目,但是也要注意简历中能写什么,不能写什么。没有准备复习的东西最好不要写在简历上。面试官经常会问你有没有经验,有没有深入研究过的东西。原则,没有答案结果很尴尬。比如你在公司做了一段时间的RN,简历上写着,面试官问RN的原理,包装,和nativecommunication等等,如果你没有准备,就会会很尴尬。最好把简历上写的技术审查到任何细节。比如我用vue写了好几年的项目。我以为我已经完全掌握了它。结果有人问了一个基本的Vue生命周期,Watch和Computer的区别,如果回答不好,面试官的印象会很差。手写题今年各大公司都增加了手写算法或者前端递归题。所以这部分的题需要提前准备。工作期间最好刷几个月的Leetcode。至少大多数简单的算法都可以被秒杀。至于前端的一些递归和语言特性。准备的比较充分。2-3周应该足够了。下面是一些高频问题。抛砖引玉。实现debounce实现throttle实现bind,call,apply打印出html中的所有标签实现lazyman实现deepclone实现快速排序实现数组乱序实现Promise实现LRU求第K大树二叉树的深度两个数字和四个数字的总和求和找到一个集合的所有子集。我在github上组织了一个项目turtle-rock。如果觉得有用,请给个star。谢谢!CSSflex已经是移动设备的标准配置。今年的面试,基本上很多都是考察flex的。所以对于flex-grow和flex-shrink,必须灵活掌握flex-direction的这些属性。以及flexbox中的元素是否会减少,检查减少的规则。还将检查高级前端的一些深入功能。vertical-align为什么没有绝对垂直居中?line-height的具体含义是什么?浏览器http2是今年的必考题。所以,HTTP2分帧、多路复用、服务器推送都需要深入掌握,如果只粗略了解基本概念,很容易被质疑。推荐你看两篇文章MDNHTTP缓存(协商缓存和强缓存),跨域这些就不细说了。http2做了哪些改进?websocket协议和HTTP2有关系吗?http2和1.1的pipeline有什么区别?HTTP2和1.1keepalive有什么区别?框架现在是Vue和React的时代。小厂追求粗犷和速度,基本都是Vue。大一点的公司基本都是React。无论它是什么。今年的采访绝对不会停留在表面上。DomDiff和VirtualDom成为了必考题。VirtualDom会提高性能吗?您对DomDiff感觉如何?什么是DomDiff算法?如何设计一个组件?Vue开发问题出在哪里?性能Web性能始终是必须的。用于网络性能。我推荐大家阅读谷歌的文档。Webpackwebpack基本上检查各种加载器、插件名称和使用方法。你用过哪些插件?如何做性能优化?如何进行代码拆分?什么是摇树?注意什么?移动端JSBridge原理和离线包都成了必考题。如何适配移动端?如何解决一个像素的问题?JSBridge的原理是什么?如何设计一个JSBridge?如何设计离线包?开发HybridH5需要注意什么?Webview的缓存机制是什么?直播方向有哪些直播协议?什么是WebRTC?这是什么道理?Nodejs资深码农都或多或少写过一些nodejs。但是nodejs面试题很难准备。平时你可能会写6,但是面试的时候可能答不上来。通常大家会问你的Nodejs处理的是什么模块。项目中的中间层Node在处理什么问题?Node的集群模式是什么?Node中的进程和线程有什么区别?如何在Node中创建进程?Node的多个进程如何通信?Koa2中context是如何实现的?如何监控节点?Node中的日志如何保存序列化?Node挂了怎么办?你是怎么发现问题的?Node中的事件循环是什么?安全HTTPS的原理是什么?如何劫持HTTPS?什么是XSS?如何预防?什么是CSRF?如何预防?如何应对重放攻击?对于一些管理班的同学来说,到了高级阶段,或多或少都有了一些管人的经验。总的来说,这部分不是那么重要。大公司仍然以技术为基础。这方面的研究相对较少。你如何管理你的团队?你如何进行代码审查?你对管理的理解是什么?你如何打败性能?你如何与成绩差的学生沟通?你如何激励你的团队?你遇到过管理上的问题吗?Prospects您如何看待前端的发展趋势?最近接触了哪些新技术?职场发展对于大多数普通人来说,最好有大厂的经历。大厂一方面在做东西上会比较深,另一方面也会有很大的红利。当时我也承认,小公司能干的人很多,但是面试官很多都是大厂教育和控制的。有了这样的经验,找工作会相对容易一些。谈论工作的连续性。工作几年后,不管是做前端还是做后端,最好结合一些业务或技术。两份工作,或者三份工作有一定的连续性。比如你做直播,那以后就继续做直播。你做招聘系统,剩下的工作继续做招聘系统。你在下一份广告系统的工作中会继续做广告系统。这样,你的积累不仅在一般的技术上,而且在业务的一部分,也更容易在接下来的工作中有所建树。在细节的方向。前端技术日新月异,可以大胆预测,5年后,可能就不是vue和react的天下了。可能我们正在使用xx框架,那么使用xx框架工作10年的码农和使用xx框架工作2年的码农有什么区别呢?这是我们老码农需要思考的问题。那么我们可以积累什么呢?这些都是我们需要思考的。我觉得在前端一定有一些方向的积累。比如WebGL,Canvas渲染,直播等等,以后不要标榜自己是前端就好了。它是一个WebGL前端,一个实时前端。这有利于我们长大后的发展。最后附上自己整理的前端手写算法合集。如果觉得对大家有帮助,请给个star。https://github.com/scofieldfan/turtle-rock