好程序员
先说前端必备的技能, html , css , JavaScript , jQuery(源码部分) , nodejs , vue , react ,设计模式, 这些技能栈还是要具备的,当然框架的话2选一即可。
现在大公司的哀求绝大多数以原生JavaScript为根本,例如腾讯,阿里等互联网头部企业,在口试前端时对原生的哀求非常之高,而且以腾讯为代表的一系列公司非常喜好让你在口试过程之中手写代码,以是如果准备口试腾讯的小兄弟们,一定要提前做好准备。
列举我们最熟习的腾讯吧,我们先看一下q-q音乐前端工程师招聘的哀求:
· 至少三年以上从事JavaScript开拓的经历;
· 踏实的 javascript 根本知识;
· 能够闇练利用 HTML、CSS、JavaScript 开拓高性能的web运用程序;
· 熟习Web性能优化, 有性能优化实践履历;
· 具有良好的代码风格、接口设计与程序架构意识;
· 具有良好的沟通能力和团队互助精神;
· 思路清晰,精良的剖析问题和解决问题的能力;
· 加分项:打算机专业或软件工程等干系专业;
· 节制做事器端编程措辞并有实践履历;
· 持续坚持写技能博客1年以上;
· 对开源项目有贡献;
· github个人原创项目有50个星以上;
· 在著名业界技能大会有过分享
· 良好的借力意识(站在巨人的肩膀上);
· 良好的软件工程意识;
· 对技能有持续的热心和激情;
· 热爱音乐。
我们可以根据需求剖析出哪些东西那 ?
首先聊一下腾讯的背景, 腾讯前端因此原生JavaScript为主,以是对JavaScript的哀求一定会很高, 那么这个高哀求和高标准大概有多高那 ,口试官常日会以丰富的履历给你各种各样的组合拳, 这一套又一套的组合拳其实打的新手摸不着头脑 ? 我们先来剖析一套原生组合拳 :
原生 javaScript组合拳
问 : 基本类型和引用类型的差异。
答 : 基本类型是存储在栈之中的值,引用类型是存储在堆中数据的地址。
问 : 可以举例解释一下JavaScript之中的引用类型有哪些么?
答 : Object , function , Array , Set , Map
当然了,口试JavaScript 肯定离不开原型链和浸染域链,那么什么是浸染域链那 ?这个实在是说来话长的一个话题,由于在这里给大家阐述下我个人的一些理解 :
函数在实行的过程之中会产生一个临时存储数据的工具, 这个工具我们称之为activeObject, 简称AO , 每个函数在实行时都会在栈里面存上这么一个东西,以便于储存期中的局部变量。但是js有全局变量的观点,也便是在局部中可以访问全局的数据,怎么访问那? 当然是由内自外的冒泡访问,但是如何由内自外,这个以包含关系决定访问顺序便是传说中的浸染域链。
接着来说原型链, 这个是实例工具访问方法和共用数据的一个顺序,也是由内自外的。
接着会顺着连续向下问一些关于闭包,内存泄露的问题。
闭包问题, 实在便是两个函数嵌套,产生了两个嵌套的活动工具,子活动工具存储了父级活动工具的属性,从而导致外部函数的局部变量被子活动工具保存的一种JavaScript特性。
用代码表示一下:
function outer(){
var freeVar = “hello”
}
这是一个外部函数会产生一个 AO , 这个AO是由于outer 函数实行而创建出来的,以是我们暂时命名为 AO(outer).
闭包自然少不了函数的嵌套 :
function outer(){
var freeVar = “hello”;
function inner(){
console.log(freeVar);
}
return inner;
}
但凡是在AO(outer)内部创建的函数引用了外部的变量那么妥了,闭包就产生了。
收起你的黑人问号脸,来看一下我的阐明 :
Inner函数实行时当然也会产生AO ,那么这个AO我们取名叫做AO(inner), ok 在这个ao中我们干了些啥? 是不是引用了外部函数的变量 freeVar ?
对啊,肯定用了,但是你只是用了freeVar 这么大略么 ? no,no,no , 其实在内部函数之中我们引用的是 AO(outer).freeVar。
好了我们这个时候来看一下,AO是个啥 ? 是个工具啊, 既然是工具那这货是不是一个引用类型,引用类型存在于内存之中不? 存在,那么恭喜你,这个AO.freeVar 不会想普通的局部变量在函数结尾被删除了, 而是被保留在了内存之中。 这,便是闭包。
基本上这一套下来,你对JavaScript的理解,对JavaScript事理和机制的理解口试官也就理解的比较透彻了 , 接下来会稽核一些知识的广度,当然这些问题都是比较大略随意也是比较随意马虎得到答案的,以是在后面的部分我就只列举问题。
布局和页面性能 :
这个便是稽核基本功的时候了, 布局可以说是一个前端最常用的技能,以是会根据各种需求提问,当然同样主要的还有一些优化细节,比如:
重绘和回流分别都是什么 , 哪个性能花费的多? 该当如何去提高性能 ?
各种居中。
命名空间和命名办法。
移动端rem布局,百分比布局,相应式布局。
HTML标签的语义化
JavaScript多线程。
http要求优化
算法设计模式
基本排序算法的理解,比如快排,冒泡等排序算法总要知道一个吧 , 这种东西提前准备总是没坏处 。
设计模式这种东西便是一个没啥卵用的大框框, 但是有写设计模式确实很有借鉴的意义,比如不雅观察者模式,策略模式,可以让代码更加优(zhuang)雅(bi)清晰。
Ok , 本日的口试剖析暂时就进行到这里,其实在口试过程中问到项目业务的情形也非常多见,由于前端口试的多样性,每次大公司的口试实在都是对我们技能栈和学习能力的一次寻衅,在不断的进步和学习之中,完善自我,持续进步,丰富自己的履历,愿天下和平,秀发长存。