前端面试葵花宝典
今天参加了一个分享大会,是关于前端面试的,虽然自己目前并无跳槽面试需求,但是觉得了解一下行业标准对自己现在查缺补漏更好一些。大会是线上的从早晨9点就开始了,一直到晚上七点多才结束,其实里面有10个分享嘉宾,不过我开头和中间有事都没有听见,听到的4~5个分享讲师分享的内容真的是干货满满,有点相见恨晚的感觉,于是会后我就想整理一下,让更多人也能有机会更早知道这些面试规则和技巧,早知道早去练习这些能力。对于准备跳槽的小伙伴会更有帮助。
注意:本文内容来自如下大会的各个大佬的讲课内容,我边听边做了个笔记(如有侵权的地方请联系小圆脸儿,给您带来不便深感抱歉,我会立马删除)
一、如何成为字节面试官喜欢的人才-Zevo-字节希望候选人具备怎样的能力?「必备项」
精通JS基础扎实的数据结构基本的算法;逻辑能力基础的网络知识及计算机原理好的素质:追求极致、坦诚清晰等「加分项」
优秀的算法熟悉设计模式有其他端开发经验岗位相关领域的技术能力或经验如何提升自己的技术能力?「长期进步」
热情、好奇心阅读数据团队及氛围参与实践深入原理扩宽广度复习,定期刷题「短期突破」
这里Zevo提供了一份对于前端跳槽者非常需要的宝藏文档:《前端年后?试真题,会80%直接进??》
点进去之前我给大家截个图预览下这个到底是个啥
如何写好一个简历?好的经历/成绩突出匹配度量化产出及成绩慎?“精通”跳槽频率坦诚清晰真题分析「题??:时序结果?(JS)」
console.log(1);constpromise=newPromise(resolve={console.log(2);resolve();console.log(3);});asyncfunctionfoo(){console.log(4);awaitpromise;console.log(6);}foo();promise.then(()={console.log(7);});setTimeout(()=console.log(8));console.log(5);
关于这个结果,不管你写对了写错了,都可能会问到你如下知识点:注:前面有整理过文章欢迎找答案:头条面试题你接住了吗—回调地狱引出的深度考察
宏任务、微任务先后执?顺序,Promise以及async中哪些部分是同步,哪些部分是异步?还有哪些时序相关的函数?setInterval浏览器端:requestAnimationFrame、requestIdleCallback;Node端:setImmediate、nextTick;分别有什么区别?如何实现Polyfifill?如何实现Promise;async函数编译ES5代码时会变成什么?Vue的nextTick如何实现的?Node的事件循环流程?是否了解过queueMicrotask函数「题??:描述?下HTTP缓存策略?(?络)」
强缓存、协商缓存;HTTP常?的头部、状态码,基本的流程HTTP、HTTPS、HTTP2的区别;?络模型,TCP三次握?,四次挥??对称加密,证书,Hash,常?的加密算法,HTTPS握?过程;多路复?DNS、CDN、WebSocket;?络安全,中间?攻击、CSRF、XSS、SQL注?,同形异义字;URL编码「题?三:请谈?下你对React的认识?(框架)」
?命周期,新旧?命周期的区别??状态组件、PureComponent、?阶组件(HOC)Hooks,Provider/Context,Ref,Portal,错误处理Redux,中间件;JSX原理?渲染?段:mixin,HOC、RenderProp;虚拟DOM的原理;setState同步异步,浅?较(shallowEqual)合成事件,Fiber、FiberNode、workInProgress;SSR、ReactNative;性能优化:耗时、帧率、CPU、内存泄漏、回流重绘如何面试?「接到?试通知怎么办?」
可以礼貌的拒绝现场的电话?试
协商沟通?试时间、?试?式(电话、视频、现场)
「如何做?我介绍?」
基本情况
与岗位的匹配度或优势
简历上容易忽略的细节
简历上没显示出来的点
「如何?对??不擅?的领域、知识点?」
没了解过,坦诚表达??没了解过
了解过,但不熟;先说明??不熟悉,再说明??对其?些猜测或想法。
「如何?对算法题?」
从易到难
写伪代码
「?试进?尾声,?试官问“你有什么要问我的吗?”,该说什么?」
不要问?试结果
可以要求加问?些你擅?的问题
了解?些团队的业务和技术栈
二、如何通过一道编程题考察候选人的水平?—宗羽-盒马大部分人面试时候都不喜欢面试时候coding,原因可能有很多:紧张、记不住API、业务中代码大部分不会的网上一查啥都有粘过来改改,自己写不太会...等,不过站在面试官的角度去看看面试官如何看待面试coding这件事吧
对面试官有哪些挑战呢?面试官和候选人的知识结构有差异,错过优秀的人遇到「面霸」,但实际能力一般,招到不合适的人在短短半个小时到一个小时内要判断一个人,其实很难所以面试官觉得:「笔试还是相对靠谱的方法」(Talkischeap,showmethecode)
「笔试中常见的问题」
考通用算法,Google能直接搜到题目设计有问题,要么满分,要么零分和实际工作内容脱节「面试官认为好的笔试题」
上手门槛低,多多少少都能写一点,不至于开天窗考点多,可以基本摸清候选人的代码综合素养发挥空间大,同样的结果,不同的实现方式?以看出候选人的技术深度「面试者常见的问题」
没有判断入参个数仍然用了本地加法还能优化吗?「另外一种更开放式的笔试形式」给一道题目,让候选人建一个Github仓库来完成题目有一定难度,但是?以Google,也?以用三方模块,和我们平时做项目差不多通常面向级别较高的候选人这种方式主要是考察面试者的编程习惯和编程能力,如代码风格、态度是否端正、细节处理的怎么样、有没有做优化、工程化素养有没有、有没有测试用例等等去考察面试者的各种能力
「笔试demo1:10GB的文件无法一次性放进内存里处理,内存只有4GB」
「解题思路」
既然没办法一次性在内存中排序,那我们能否将10GB的文件拆分成若干个小文件小文件先分别排序,然后再合并成一个大的文件「如何用代码实现呢?」
这里需要用到一种数据结构:堆
堆:就是用数组实现的一个二叉树
堆分为:最大堆和最小堆,下面是一个最小堆(父节点小于它的子节点)
Array=[1,3,5,4,6,13,10,9,8,15,17]1/\35/\/\/\/\
「堆有一些特性」
Array=[1,3,5,4,6,13,10,9,8,15,17]1/\35/\/\/\/\左节点位置:父节点位置*2+1右节点位置:父节点位置*2+2
对于一个父节点来说
很容易查找最大值/最小值
「完整的参考实现」
转载请注明:http://www.iogko.com/ways/9506.html