,问题的答案也不是唯一的。大部分只提供问题,后面会补上答案!当时,答案还不是特别完整。面试过程比较长,年初断断续续开始面试,没有太多详细的规划,有些答案当时已经不记得怎么回答了。年初的面试公司挺多的,美团、今日头条、阿里、快手、滴滴、虾皮等等,还有几家不知名的小公司。从各种前辈的经验来看,首先是在小公司回顾过去学习新的东西,通过一次又一次的小访谈总结自己的知识。但其实我遇到的情况是,小公司不会问太深的框架原理和基础(可能有公司关注,但我没遇到过),基本以自己做过的项目经验为主,所以这几天第一次面试没有什么新的技术进步(毕竟每次面试都是学习,从面试技巧上来说,至少可以让后面自己的项目更精彩。。。)。大厂的面试,只能说比较难。首先,在采访中和快手交流的时候,前几个问题比较紧张,答的不是重点。面试官戴着鸭舌帽,基本没看书。我,我时不时对视一眼,从一开始就一副对我不感兴趣的样子,受了不小的打击。当时对快手的印象还不错,就请了一天假准备面试,没想到结局很惨。.在其他面试中,面试官非常nice。虽然有的通过了,有的没有通过,但至少体验还不错,学到了很多东西。因为面试题比较相似,所以会根据简历提问。基本上20分钟左右讲项目,20分钟讨论技术原理和基础,最后时间手写几个题。相关,至少个人觉得没有特别尴尬的问题。同时因为面试题目大同小异,所以我没有具体区分题目出自哪家公司。希望同学们自己脑补一下。。。下面是我尽量记住的面试题,还有虽然没考到但很有可能考到的题。希望能帮到最近想跳槽的同学!经文部分仅供参考,仅供参考,仅供参考!!!因为我几乎没有React相关的经验,所以问得最多的React问题就是你觉得和Vue有什么区别?啊……从这点来看,简历部分确实很关键。其实我做过,只是我不精通,简历上也没有写,所以不知道怎么做,不要问。。。面试部分我分在下面分为八个方面:(后面题目的:star2:代表面试频率。很多次)JavaScript基础css和优化vue或reactframework相关前端封装等工程浏览器和跨平台相关常见安全问题技术网相关的算法很少,也没有Html相关的东西,一方面相关话题确实很少,另一方面不会有太难的问题,平时开发中的常见情况可以基本可以解决。并且因为我是简历问的问题,一些很常见的nodejs、serverless、GraphQL等,我的面试题中没有,但是很可能会出现在你的问题中,相关问题可以自己补!原生JS代码1.JavaScript是否实现了上传图片的压缩?答:读取用户上传的File对象,读写画布(canvas),使用CanvasAPI进行压缩,压缩完成后转换成File(Blob)对象,上传到远程图片服务器;但有时我们也需要将一个base64字符串压缩,然后转换成base64字符串发送到远程数据库或者转换成一个File(Blob)对象。思路是使用File+Canvas的drawImage。可以看张新旭的文章HTML5文件API加canvas实现图片前端JS压缩上传。2、说说JavaScript异步?答:setTimeout,MutationObserver,postMessage,Promise,async,await,generatorfromMutationObserver,postMessage会涉及到vue的$nextTick从generator到co.js的实现,代码不长,意思很容易理解,还是写吧真的没写出来,建议兄弟们仔细看!从Promise和setTimeout开始讲事件循环3.Browser和nodejs事件循环?答:Executionstack,promise是microTask,setTimeout是task的多阶段,完整的模型介绍可以从这里看:html.spec.whatwg.org/multipage/w...需要说明的:首先,setTimeout并不特殊,也是一个任务。另外,每个task和大量的microtasks执行完之后(不一定在一个周期内执行完),就会执行renderUi阶段。虽然renderUi并不是每个事件周期都执行,但是每个间隔就是传说中的60hz。帧16ms。nodejs的eventloop略有不同...更多process.nextTick等4.手写Promise或Promise的静态方法回答:手写Promise尝试写Promise的状态,静态方法和.then,.catch。当然,更详细的还原可以参考PromiseA+规范。静态方法参考Promise.allSettledPromise.allPromise.race等。5.手写节流防抖答:老生常谈,但原理很简单。主要看功能能不能封装,封装是否超前,是否综合考虑情况。6.手写绑定功能答:同上。7、serviceworker的使用答案:缓存、渐进式应用、拦截处理说到worker的时候,你可能还会说到webworker、sharedworder等,如果你对这方面的工作有信心或者有深刻的理解,你可以炫耀一下。能体现出自己的优势...8.严格模式答案:这个是undefined,with是禁止的,参数不允许改变,给只读对象赋值会抛出异常,需要先声明变量,调用,apply第一个参数不会被Conversion...可以回答一些。9.PrototypeChainandInheritanceAnswer:经常被问到,不过找个点赞高的解释一下,看完就明白了。只要记住频繁的测试点。10.正则表达式匹配规则?答:这个确实没有办法。只能是系统学习正则表达式的规则。当然,最常见的测试可能是电子邮件和网址匹配。css及优化1.flex布局:star2:答:阮一峰老师的flex文章清晰易懂。常用的api和两栏、三栏的布局等等,对我来说有点难。之前的项目兼容性比较高,基本没怎么用到flex布局。没用过的推荐使用,几个小时布局就通用了。2、优化长列表滚动效果的问题我没有回答,说了几个js的解决方案也没有回答对点。面试官回答:transition优化动画效果。分析完分层渲染后,可以使用transform强制分层。第二种方法可以使用content-visibility来防止不可见元素被渲染,设置值为auto。三是对于一些动画效果,可以使用will-change对父元素进行gpu加速,用完就删除。3.响应式布局:star2:答:可能涉及css功能,rem/em区别,mediaquery...4.什么是BFC?答:块级格式化上下文,我一直用它来布局!问:BFC是由什么组成的?它有什么作用?答案:body根元素浮动元素:floatvalue比none绝对定位元素:position(absolute,fixed)displayisinline-block,table-cells,flexoverflowvalue比visible(hidden,auto,scroll)function,为layout:joy:(不要这样回答,具体请看后面的文章)推荐一篇关于vue或react框架vue响应式原理和双向绑定实现代码的BFC文章?:star2:Vue3响应式原理,和有什么区别?Vue的diff算法思想,如何比较节点?Vue的编译实现?:star2:vue如何自定义指令?具体的api怎么写?Vue3对vue2的性能优化(在编译和运行时方面)?反应有何不同?了解钩子吗?答:(虽然我不知道,但是我可以说点别的,比如vue3也有hooks,它的用途和一些优点?)你用过TypeScript吗?有什么优点以及为什么要使用它?针对特定场景,使用TypeScript进行类型定义。答:vue项目很多,ts很少用,之前用过。在写前端监控sdk的时候,对接口进行了类型检查。它就像一个文档,每个接口都有一个定义。待会再读一下,瞬间明白其中的意思。(强类型还有很多其他的好处,但是我个人觉得写起来超级麻烦,当然也有人非常喜欢。)Vue的keep-alive使用场景和原理?:star2:前端打包等工程webpack和rollup使用?tree-shaking的原理?:star2:如何写webpackloader和plugin?你是否熟悉vite,它与webpack有何不同?在实际项目中对vite和use的贡献?vite-electron-quickGit地址代码合并PR历史如何统一捕获错误?如何捕捉vue的异步错误?自写JS错误捕获SDKGit解决浏览器及常见安全问题相关浏览器页面加载过程,越详细越好:star2:浏览器缓存:star2:跨域问题及处理:star2:v8快阵慢阵,隐藏类还是其他模块?xss和csrc是什么意思?如何预防?:star2:答:美团的两篇文章出示,面试官直接问下一个问题!xsspreventioncsrfprevention跨平台技术electron的使用,如何实现小托盘功能?flutter的widgetstateFullWidgetstateLessWidget有什么区别?jsBridge的原理?:star2:Flutter的渲染引擎?网络相关dns相关,什么是dns服务器,如何查询dns?:star2:Oauth2.0和jwt单点登录和其他http/https有什么区别?为什么https更安全?为什么https不是很安全?http1.x和http2.0的区别?http2.0的优点,有有些情况会比1.x慢?https加密原理?http2.0压缩头,以及并行请求的原理?TCP连接?少量算法回文串,中心扩散法冒泡,快速排序:star2:二分查找:star2:二叉树:star2:动态规划(这个我没遇到过,可能太难了,面试官看我只花了半天搞定下,这个就不直接考虑了,大家可以关注下)面试的项目题大概是让你设计一个系统技术选型,或者怎么设计一个组件库,设计asystem个人猜测对于我这种渣男,这种问题就是看楼主有没有意识,也可以看看我对哪些技术比较感兴趣?除了系统之外,还有针对某些场景的设计方案,比如如何使用鉴权来控制登录时间,设计保持登录状态7天等。因为我的简历几乎没有关于nodejs服务器的内容,但是面试官总想问。。。只能说自己做的博客服务器。。。服务器代??码Git地址很简单。。。我只能sayDeveloped:joy:综上所述,我只能粗略的了解一下框架原理。如果真的深入某个部分的具体代码和实现方法,只能写一个框架,很多细节是不会注意到的。算法还是很弱,还好面试官很和蔼,很会发现人的美哈哈哈……(最好多刷,不然会影响你的工资和成功率:嘘:)提交前你的简历,最好通过各种渠道找到公司内部的人,提前了解业务,这样也有助于后期优秀offer的决策。勇敢地说不。如果你对某些offer的待遇不满意或者不喜欢这个生意,你应该相信自己,不要因为目前没有更好的offer就认输。一份工作短则一年,长则N年。为了幸福的生活,您必须谨慎选择!!!第一次换工作是很不安的。和毕业前开始找工作的感觉是一样的。您真的必须相信自己并有条不紊地进行。如果有什么我可以帮忙的,请随时来找我,比如修改简历,推荐,至少,你可以说说你的烦恼,每个人都有烦恼~祝大家前程似锦,拿到满意的offer。
