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

18年的求职总结

时间:2023-04-03 13:20:24 Node.js

18年的求职总结我的求职已经接近尾声了,感觉真的很累。把这半年的经历和面试总结写下来,希望能给和我一样正在找工作苦恼的人一些帮助。先说说背景:微电子科学与工程专业,学过两门CS相关的课程:c语言和单片机。这个专业唯一的优点就是大部分人不知道这个专业要学什么,但是我觉得跟电信差不多。所以在很多野程序员中算是略占优势,哈哈。这个专业适合读博士,也算是一个借口,说自己擅长,好自欺欺人。求职心得:3月份开始投简历找实习,结果发现自己真的是一无是处。一开始是腾讯和阿里的内推面试,被折磨的七零八落,(事件模型,原生XHR,this等等都答不上来)于是开始疯狂补前端。大三的课很多,买了块新电池,坐在课尾敲代码。遇到稍微知名一点的互联网公司,就投了Resume,马不停蹄的面试,每次面试完后,快速记录面试经历,总结经验,查漏补缺。就这样一直到四月份,我才逐渐能够从容应对前两轮技术面试。五月初,我上了美团和今日头条。提供。几斤几两我还分得清清楚楚。这两个offer多多少少都是幸运的,所以不是很开心。每次看别人的面试,看到这么多问题自己答不上来就心慌,所以还是不停的投简历,继续面试,为面试积累经验。去美团实习的经历很愉快。上班比较轻松,领导也很好。我有相对更多的时间学习而不是沉迷于业务。早批开始后,我会开始面谈,准备面试。一个月后,我收到了一份保留意向书。后面投资的公司不多,除了Face++,给过面试机会的公司基本都能走完所有面试流程,今日头条,百度,美团,好未来,快手,华为都给过offer。虽然最后有的没给offer,但是这个状态勉强过得去。所以,努力总会有回报的,还在奋斗的同学们,不要放弃,总有柳暗花明的时候。面试经:我在互联网上基本面试过一二线公司。总结面试技巧。总结:个人认为技术方面大体遵循DFS搜索原则。先找一个切入点深挖,直到回答不上来,再开始调查类似的知识点,然后再深入到底。最后,可以综合判断一个人的水平。因此,你所掌握的知识体系必须兼具深度和广度。然而,这是不可能的。1.学会主导面试问题的方向和及时展现你的技术深度是重点。比如,你已经花了足够的时间研究HTTP/2,并且基本上对它了如指掌。然后一旦面试官问到网络规划或者性能优化或者HTTP,HTTPS,你得想办法引导面试官问你HTTP/2,然后大显身手。2.学会回答问题:面试问题分为三类:第一类,你已经遇到并且熟悉了,这个时候不要高兴,要控制好回答的节奏,以免被面试官认为你刚刚击中它。第二类:不熟悉,简单解释,避免可能让你入坑的词汇(比如你问react,你硬要说diff,但是写不出来diff算法)。第三类:没有,就说自己没有接触过这方面,不要装懂。如果是非知识题,你可以推理出来,体现你的分析能力。3、对director/manager的回应:一般技术问题比较少,多职业规划和过往经验总结。个人觉得这里最重要的是让面试官觉得你是一个很有潜力的人,将来会是一个优秀的程序员。你可以用自己的经历证明你热爱技术,喜欢探索原理,做事能坚持不懈等等,说明你具备优秀程序员的素质。处理其他问题还是慎重为好,三思而后行。另外看了美团的面试评价表,他们也很在乎一个人的表达能力、思维能力、个人素质。因此,适当重视个人软实力,也可以弥补技术上的不足。关于前端面试的应对,建立完善知识体系:基础:基本过一遍MDN/w3c文档。在HTML中,CSS的基本问题被颠覆了。掌握《JavaScript高级程序设计》可以应对绝大部分JS问题。(犀牛书当然也是一样)。然后就是常规的基础题。、掌握HTTP1.1HTTP/2HTTPS的各种特性JS系列:《你不知道的JavaScript》、讲解js的难点问题。我探索了《JavaScript设计模式》,《JavaScript函数式编程》。算法,推荐《JavaScript数据结构和算法》以下总结前端主要知识点:HTTP相关,尤其是网络性能优化相关的缓存,各种缓存控制方式和CDN本地数据存储,cookie,ls等和pwa渲染相关,浏览器渲染机制,加载顺序,优化点。SPA白屏等可以ES6相关,异步函数及其底层原理,推荐阮一峰ES6性能优化教程,包含的东西比较多,既要掌握实践又要知道原理。设计模式,怎么写,优缺点和应用场景。Web安全、XSS、CSRF、SQL注入具体原理及防范措施webpack相关问题、打包原理、模块相关、CSS3和HTML5相关跨域处理解决方案及原理、即时通讯解决方案、原理相关三大框架、vdom、数据绑定、diff等。面试过的公司面试经历记录如下:阿里、腾讯、外企都是直接刷简历,不给面试机会。我很伤心。我也很绝望,谁让我这么菜!搜狐提前批了两轮技术面试(7每月搜狐楼,题目比较简单,只记得这么多)BFCFlexbox用法,详见汇总排序,找出最大三数快速排序的原理,复杂度计算继承的实现,详细问一下创建实例对象的内部过程.vdom原理,实现异步原理,macrotask和microtask,写了个总结360奇舞团两轮技术面+HR面,当时没有记录,只记得未回答的问题为什么webpackrefreshprincipleserverpush和websocketurl的长度受到影响限制XHR如何传输二进制流。百度大搜和百度百度都面试过两个部门。一共有六轮面试。我没有写下所有的问题。我问的问题太多了,有些记不清了。大搜大搜正在百度现场采访。三小时三轮面试。(旷野好远-_-第一轮面试题比较基础,例行的自我介绍,随便问了下美团实习项目,然后就开始考察基础了。Q:先说说JS继承,后面有个白板,可以画画。讲ES5继承和原型链,写一个ES6类的例子。和缓存Q:一般怎么排查chromepanel、balabala等第三方工具的性能问题Q:我记得cookies和localStorage的区别,基本涵盖了大部分基础知识。:学校有哪些课程(有这个专业没有CS相关课程)?Q:你对数据结构了解多少,说说前端用到的栈,队列,哈希表,DFS(挖坑)Q:现在给我一个DOM,写了一个DFS,把里面的所有文字都找出来,打印在一张白纸上,但是明显有个BUGQ:递归的原理是什么,需要显式设置终止条件吗?答不上来Q:给一个数组,把这个数组的每个元素放在一个l列的表格中,写一个二层循环打印表格的DOM结构。Q:说说URL到balabala页面的过程Q:HTTP的建立过程是怎样的,详细点,是长连接吗?Q:HTTP报文和回文的内容是什么Q:XHR是怎么发送的,具体是怎么建立的,和HTTP有什么区别?让我们谈谈原始的XHR。我不明白其中的区别。Q:XHR上传的文件和其他数据有什么区别?和HTTP数据传输有什么区别?文件上传使用formData。面试官的XHR传输数据将进行base64编码。聊聊生活之外的三面经理:Q:这个项目在canvas上画散点曲线的问题是怎么解决的?高阶贝塞尔曲线拟合,计算控制点也可以用最小二乘法计算。Q:为什么不看看echart源码等其他开源项目呢?(我用的是echart图表)当时还没有那么开明。我介绍了网络搜索部门的前端组业务。整个部门只有一个前端组,而且好像在加班。我进行了秘密电话采访。搜同边问:问:如何实现继承和高程继承?Q:实例化对象的过程是怎样的?Q:构造函数有哪些属性?长,别人看不懂问:构造函数的原型指向什么??与实例对象的原型有什么关系?问:这里有什么用,在其他地方有什么用?Q:绑定和调用有什么区别?Q:排序算法是一波,复杂度是一波。该项目要求更深入。Q:你对ES6了解多少,一一细问?Q:一般用什么异步?of和for循环有什么区别?Q:canvas如何监听点击事件获取触发位置并计算是否在绘制图形的范围内?Q:还有别的写法吗?canvas有相关接口吗?他说是的,isPointInPath(),这个我忘了。问:你对网络安全了解多少?Q:如何防止Csrf,验证是否可以完全避免origin和refer?不可能完全避免三边套路介绍。问了学校三年的情况,团队情况,实习情况。然后话题1转,英语怎么样,我听听都不会,但是会读会写。然后全程英文视频面试(汗流浃背的面试官自我介绍,然后开始提问。英文真的很烂,想说什么都说不出来,好尴尬。面试官挺给力的。我是南大本科毕业的,国外硕士,创办AI公司被百度收购的时候过来的。希望可以做NLP。当过CEO的人真的很有魅力。面试官给了一些职业规划和学习建议。今日头条side(内推)三轮技术方面,一个下午完成。牛客视频方面,上来写题。第一题是url转置,www.toutiao.com=>com.toutiao.www转换成数组,然后转置,面试官说,不用API,像C语言那样写怎么办。全部查找,记录索引。根据索引数组的长度,循环交换每两个相邻的前片段indexes.面试官说exchange这里用的是temp临时变量,没有临时变量和exchange值的js怎么写?例如,交换ab值。尝试写一个函数。想了想,试着写一个curried函数来解决,但是没有写,面试官提示ES6。我个人认为这个问题是有偏见的。除了解构,它还可以通过参数和对象来实现。[a,b]=[b,a];{a:b,b:a}然后查看css,要求写一个搜索框,右边的搜索按钮是固定宽度的,左边是自适应的。我写了一个绝对定位,浮动布局,css3calc,csstranslate设置宽度。然后大致说说使用flex布局。中间问了哪些元素默认是inline-block,解释了block和inline的区别。面试官接着问CSS3有什么新特性?说到动画,仔细问动画,我说我对动画不熟悉。中间提到css3性能,然后问2D和3D动画性能有什么区别?我不明白这一点。我说有的可以触发GPU加速,渲染性能提升了。GPU问题,所以我无法回答。头条不多说,写题。实现绑定功能。这个不难,一会儿就写完了。主要是测试闭包和arg。另外记得先检查bind是否存在。面试官还不完美,绑定对象后调用参数怎么办?获取参数并传入返回的函数。然后想到了这个问题:storeuptonpairsofKV;如果超过n个,随机移除一个过期的KV;如果没有过期的KV,则按照LRU规则移除一个KV;如果查询时已过期,则返回空;没学过算法,根本看不懂。然后开始问性能优化,从域名服务开始,到HTTP传输,从加载缓存,到渲染,再到代码优化,一步步详细讲解。面试官中途打断HTTP,问HTTP/2有什么特点?谈谈多路复用和服务器推送。然后问HTTPS过程HTPPS建立连接,证书加密过程面试官问简历HTTPS连接后传输数据如何加密?面试官问为什么Sprite可以优化性能?答案是减少HTTP连接,一次性传输,HTTP有并发限制。HTTP为什么要限制并发?可能是为了避免过度的资源消耗。如果我必须一次加载100张图片怎么办?不知道,我知道的CDN也解决不了。面试官问什么是HTTP2多路复用?建立HTTP连接并传输多个文件。Sprite图像的优化点在哪里?还有别的事吗?无法回答。(实际上,Sprite图片是将多张图片组合在一起,在一定程度上减小了尺寸,单张图片包含了很多无用的信息,但是HTTP层的优化可以用多路复用代替)。HTTP在哪个OSI层?应用层具体是哪七层?渲染优化方面,问了functionthrottling,要求写一个throttlingfunction。代码优化方面,问了queryselectAll和getBy的区别,也问了mouseenter和mouseover的区别。标题三边主要是问项目和实习。遇到检查点,就会问到底。我没有任何具体印象。下面是血的教训:我又问了OSI,还是不行。采访者:中间有个缺口,你年轻的时候怎么不去看看?我:滴滴出一个timer异步for循环题,求解释结果。这并不难,只是要小心。然后是一道很长的Thefunctioncall问题,主要考察this点、作用域链、原型链和调用。如果不小心掉坑了,我给了结果,顺便深入讲了分析过程。然后就是模板解析函数,给一个小胡子风格的模板和一堆参数,需要编译模板输出。在白纸上手写。画了几笔,发现写不出来判断模板是否合法。然后我继续写小胡子更换。告诉面试官我的想法和遇到的问题,面试官顺势问了一些关于代码的问题。面试官又问了事件代理,粗略的说了一遍,顺便解释一下事件模型和性能优化点。然后让他解释一下从url到页面渲染的过程,大致说一下然后问了css和js加载的区别,主要是排查js阻塞的问题。然后问了一下domready和onload的区别。说说http的各个版本。说说http1.1的特点。http/2的二进制分帧、多路复用、服务器推送和性能优化,再说https加密。面试官接着问了HTTPS的过程和细节,详细解释了我经历的HTTPS证书加密过程。面试官让HR带我出去等二面。滴滴给了我不好的面试体验,所以我放弃了面试。快手快手HC难得,面试有点难度。之后去办公室看了看,感觉还不错。说说这家略显神秘的公司的面试过程。一方面是基础技术面,问了前端的方方面面。给了一些算法题和技术场景,给出了解决方案。.第二面(前端主管)基本上就是在线编码的全过程。我记不清题目了。四五题难度不一。我不能继续问。三边是departmentLeader的(前端和前端主管)。HR后来说,三方面考察的是智力、反应速度和学习能力。他们提出了一些算法和智力问题,并给出了一个UML图应用实例来设计一个停车场方案。收费系统的UML样例图。四面是HR面,乱七八糟的问了问,学校情况,执行情况,个人性格等等。不就是春招实习的时候500强面试没有offer,所以投给了菊厂测试。笔试,我刚刚通过了性格测试。两轮面试,问了一些关于学校项目经历和C语言的问题,其他的就是闲聊。然后就莫名其妙的通过了面试。秋招直接去最后面了,我也没问什么技术问题,聊了40分钟。然后我收到了offer。我觉得没有比华为更容易的面试了?薪水中等。附录:以下是其他公司的一些采访:腾讯方面1.浏览器的工作原理浏览器的主要组成部分包括:用户界面——包括地址栏、后退/前进按钮、书签目录浏览器引擎——用于查询的界面以及操作渲染引擎渲染引擎——渲染接口:Firefox、Chrome和Safari基于两种渲染Firefox使用的是Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。Network——用来完成网络调用,比如http请求UIbackend——用来绘制基本的组合框和对话框等,组件有一个通用的接口,不特定于某个平台。底层使用操作系统JS解释器的用户界面-解释执行JS代码数据存储-属于持久层,浏览器需要在硬盘中保存类似cookies的各种数据2.Web安全,附实例3、状态码4、同源:同端口、同域名、同协议5、对象继承6、ES6的历史和新特性是什么?7.Promise原理8.事件模型9.常见兼容性问题,Enumerate(手机端/PC端)10.性能优化   阿里侧1.Ajax原理2.浏览器解析流程:解析html构建dom树->buildrendertree->layoutrendertree->drawrenderTree参考文章3.垂直居中4.数据类型判断5.路由实现6.数据本地存储7.跨域引用8.数据双向绑定单向绑定优缺点阿里巴巴双面1.无线性能优化2.TapEvents,Touch3.数据存储搜狐一侧1.Dom操作2.移动布局方案3.前后端协同4.原生Ajax实现过程搜狐两侧1.单链表反转2.快排3.即时通信(Ajax除外)和websocket)对其他方法感到困惑1.Comet技术:基于HTTP长连接的Web端实时通信技术2.SSE:服务端发送事件,使用长链接进行通信4.服务端如何处理cookie(nginx)代理转发5.对象继承6.this7.rem布局的优缺点腾讯合金团队端(记录二,其他的还行)动画的实现方式有哪些CSS3JS帧动画、定时器、requestAnimateFrameeCanvas动画SVG图片对象继承的实现双面web安全https加密过程,证书使用xss几种形式,防范手段,过滤哪些字符?xsrf原理、实例、预防手段(Laraveltoken)Sql注入性能优化代码优化(html、css、js)网络性能优化:Cache缓存的强制缓存和协商缓存。具体详见CDN原理及应用HTTP压缩上下文环境对象设计模式(需要如何实现、应用、优缺点):单例模式工厂模式发布订阅模式跨域(成因)JSONP原理CORS如何设置Nginx代理哪些框架源代码已阅读?如何写一个CSS库,需要注意什么?京东二面JS面向对象封装、继承、多态与应用?BSTpromiseAll如何实现,多层异步回调如何实现?加油站问题(贪心算法)阿里巴巴双侧XHR具体底层原理和API单例模式实现/设计模式JSONP原理,Latex在回调过程中如何解析hash算法实现,如何避免冲突,如何检测冲突冲突如何将ES6编译成ES5,css-loader原理,ES6转ES5常用数据结构的常见例子,常用算法node多线程实现过程和线程阿里三面理解前端说说rn,Weex原理说说XHRJq的选择器引擎,$('.a.b')和$('.a').find('.b')MD5汇总算法其他使用如何从前后端分离的角度框架?不使用后端模板渲染,如何让前端数据直出(不使用异步请求数据)?SSR适用于哪些场景?为什么SPA的第一屏是空白的?vue构建过程的原理,具体ProcesstemplatetoDOM一般过程:template模板解析后返回AST获取AST,然后通过generate()生成渲染函数。执行渲染函数后,会得到一个VNode,也就是虚拟DOMpatch函数,负责将虚拟DOM变为真实DOM。vue2有什么新功能?standalone和runtime-only的区别和应用?详细爬虫的实现原理?如何实现一个爬虫,如何解析文件?如何解决爬虫慢的问题?多线程如何保证每个线程的安全?你对webpack工具和node了解多少?各个节点模块的底层原理?CSS3实现卡片翻转?垂直和水平居中?这在JS中是什么?如何改变这个?说说时间复杂度的计算?算法题:假设26个字母对应1-26,将一串数字转换成字母有多少种可能?暴力解的复杂度是多少?(百度外卖业务:包括移动客户端(RN、混合)、PCweb客户端、H5、后台界面vue、桌面应用包括编辑器插件、前端构建工具、节点中间层)饿了么盒子模型盒子-sizingXHR和APIsession和sessionStoragemapforEach(每个API详情数组)dom事件代理的原理,有什么优势?三种隐藏方式的区别:visibility:hidden,display:none,opacity:0渲染上的区别:1.设置元素display:none,元素会在页面上完全消失,原本占用的空间元素会被其他元素占用,这意味着它会导致浏览器重排和重绘。2、将元素的可见性设置为hidden和display:none的区别在于页面消失后元素所占用的空间仍会保留,因此只会导致浏览器重绘而不会重排。3.opacity:0,就是看不到元素,元素还存在,占据原来的位置。注意:事件绑定的区别:1.display:none:元素完全消失,不会触发绑定事件。2.visibility:hidden:不能触发它的点击事件。有一种说法是display:none表示元素是看不见摸不着的,而visibility:hidden则是看不见摸不着的意思。事件,说明这个方法元素也消失了,但是仍然占据着页面空间。3.opacity:0:可以触发点击事件。将元素的透明度设置为0后,元素相对于人眼不存在。对于浏览器来说,它仍然存在,所以可以触发绑定事件的动画属性的不同:1.display:none:完全不受transition属性影响,元素立即消失2.visibility:hidden:当元素消失和transition属性设置的时间一样,但是没有动画效果。3.opacity:0,动画属性生效,可以执行正常的动画效果。该代码演示了地址标题上的内联和块元素列表。块和内联块有什么区别?跨度包含12px英文'abc'。问跨高?你怎么理解基线?CSS实现自适应正方形?字符串搜索第一个非重复字符。如果换成字符串呢?角度数据绑定机制?重绘和回流理解querySelectAll和ByClassName获取元素的区别?如何绑定事件?GetComputedStyle用法?addEventListener绑定事件?参数不同执行顺序。定期匹配电话号码。执行、匹配、搜索用法?推荐一篇关于数据类型判断方法的优质正规文章,toString判断的出处?ES6类原理?函数剩余参数长度?如何判断function.length和arguments对象长度的区别?标题两侧vara;一个的类型;让一个;考察mvp、mvc、mvvmvuex、watchobjectjsdeferasyncorder、moduledependency(AMD、CMD区别)设计模式和applicationsession和cookie清除浮动的原理,BFCcookie存放在哪里?(memory)typeofNull,Undefined,Boolean,Number,String,Objecttypeof只能检测基本数据类型CVTE面试四列布局数组,数组对象去重数组检查出现次数选择器权重右键菜单自定义Ruff函数变量parametertimer原理url=>rendering:scriptblockingdatastructureapplicationdatatwo-waybinding(vue,ngprinciple)其他小公司:面向对象三元素闭包三列布局内联元素包含块元素的三种表现隐藏的区别methods找到最大的子数组以及块元素和行内元素渲染的区别?ulli实现计数。flex-box用法svg和canvasJPG、png图片特征、场景CSS写轮播拖拽构建PV统计URL监控变化笔试人人网1.数组运算2.排序算法3.动态规划(书包题)4.编程题(regular)CVTEthread各种通信协议二叉树算法ComplexityStack封装,利用stack对数组逆向(编程)美团各种排序算法和复杂度计算Node网易stack可能性计算的一些用法Array去重基本数据类型Null,Undefined,Boolean,Number,String、Objecttypeof只能检测基本数据类型