百度
360搜索
搜狗搜索

nodejs面试题2021,前端面试题2021(JS篇(上))详细介绍

本文目录一览: 前端面试题2021(JS篇(上))

(水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数。水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身 例如: 1~3 + 5~3 + 3~3 =153)

(质数就是在大于1的自然数中,除了1和它本身以外不在有其他因数的自然数)

a:11,b:10

A [] B [""] C [undefined] D [null]

A ['false'] B [false] C[0] D[]

A null B undefined C “hello” D“world”

A "llowo" B "llow" C "llo" D null

A "llowo" B "llow" C "llo" D null

A getYear()
B getMonth()
C getDay()
DgetDate()

A 基于对象
B 移动端优先
C 事件驱动
D 跨平台

A String
B Float
C Number
D Null

A 任意单个字符
B 任意单个字母
C 任意单个字母、数字、下划线
D 任意单个字母、数学、下划线、$符号

A

B

以下说法中正确的是(AD)

A.在页面的第二个文本框中输入内容后,当目标离开第二个文本框时,第一个文本框的内容不变

B.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,将在第二个文本框中复制第一个文本框的内容

C.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时候,将在第一个文本框中复制第二个文本框的内容

D.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,第二个文本框的内容不变

js烧脑面试题大赏

点击查看答案
2、1
点击查看解析
首先基本类型数据是按值传递的,所以执行b函数时,b的参数a接收的值为1,参数a相当于函数内部的变量,当本作用域有和上层作用域同名的变量时,无法访问到上层变量,所以函数内无论怎么修改a,都不影响上层,所以函数内部打印的a是2,外面打印的仍是1。
点击查看答案
报错
点击查看解析
给函数多个参数设置默认值实际上跟按顺序定义变量一样,所以会存在暂时性死区的问题,即前面定义的变量不能引用后面还未定义的变量,而后面的可以访问前面的。
点击查看答案
10、20
点击查看解析
点击查看答案
undefined、{n: 2}
点击查看解析
恕笔者不才,这道题笔者做一次错一次。
反正按照网上大部分的解释是因为.运算符优先级最高,所以会先执行a.x,此时a、b共同指向的{n: 1}变成了{n: 1, x: undefined},然后按照连等操作从右到左执行代码,a = {n: 2},显然,a现在指向了一个新对象,然后a.x = a,因为a.x最开始就执行过了,所以这里其实等价于:({n: 1, x: undefined}).x = b.x = a = {n: 2}。
点击查看答案
[]
点击查看解析
这题比较简单,arr[10]=10,那么索引3到9位置上都是undefined,arr[3]等打印出来也确实是undefined,但是,这里其实涉及到ECMAScript版本不同对应方法行为不同的问题,ES6之前的遍历方法都会跳过数组未赋值过的位置,也就是空位,但是ES6新增的for of方法就不会跳过。
点击查看答案
Goodbye Jack
点击查看解析
点击查看答案
NaN、13、NaN、1、1[object Object]、1、[object Object]
点击查看解析
这道题考察的显然是+号的行为:
1.如果有一个操作数是字符串,那么把另一个操作数转成字符串执行连接
2.如果有一个操作数是对象,那么调用对象的valueOf方法转成原始值,如果没有该方法或调用后仍是非原始值,则调用toString方法
3.其他情况下,两个操作数都会被转成数字执行加法操作
点击查看答案
456
点击查看解析
对象有两种方法设置和引用属性,obj.name和obj['name'],方括号里可以字符串、数字和变量设置是表达式等,但是最终计算出来得是一个字符串,对于上面的b和c,它们两个都是对象,所以会调用toString()方法转成字符串,对象转成字符串和数组不一样,和内容无关,结果都是[object Obejct],所以a[b]=a[c]=a['[object Object]']。
点击查看答案
25、20、20、25
点击查看解析
这道题考察的是this指向问题:
1.逗号操作符会返回表达式中的最后一个值,这里为inner.func对应的函数,注意是函数本身,然后执行该函数,该函数并不是通过对象的方法调用,而是在全局环境下调用,所以this指向window,打印出来的当然是window下的out
2.这个显然是以对象的方法调用,那么this指向该对象
3.加了个括号,看起来有点迷惑人,但实际上(inner.func)和inner.func是完全相等的,所以还是作为对象的方法调用
4.赋值表达式和逗号表达式相似,都是返回的值本身,所以也相对于在全局环境下调用函数
点击查看答案
1、2、3
点击查看解析
这题考察的是变量解构赋值的问题,数组解构赋值是按位置对应的,而对象只要变量与属性同名,顺序随意。
点击查看答案
[4, 5, 3]
点击查看解析
是不是从来没有用assign方法合并过数组?assign方法可以用于处理数组,不过会把数组视为对象,比如这里会把目标数组视为是属性为0、1、2的对象,所以源数组的0、1属性的值覆盖了目标对象的值。
点击查看答案
4
点击查看解析
这题考查的是自增运算符的前缀版和后缀版,以及switch的语法,后缀版的自增运算符会在语句被求值后才发生,所以x会仍以1的值去匹配case分支,那么显然匹配到为1的分支,此时,x++生效,x变成2,再执行++x,变成3,因为没有break语句,所以会进入当前case后面的分支,所以再次++x,最终变成4。
点击查看答案
true、true
点击查看解析
2.typeof对函数使用返回'function',class只是es6新增的语法糖,本质上还是函数,所以两者相等
点击查看答案
true、false
点击查看解析
1.没啥好说的,typeof对数字类型返回'number'。
2.这题考查的是运算符优先级的问题,逻辑非!的优先级比全等===高,所以先执行!!typeof count,结果为true,然后执行true === 'number',结果当然为false,可以点击这里查看优先级列表:点我。
点击查看答案
2、2
点击查看解析
点击查看答案
1
点击查看解析
这道题考察的是作用域的问题,作用域其实就是一套变量的查找规则,每个函数在执行时都会创建一个执行上下文,其中会关联一个变量对象,也就是它的作用域,上面保存着该函数能访问的所有变量,另外上下文中的代码在执行时还会创建一个作用域链,如果某个标识符在当前作用域中没有找到,会沿着外层作用域继续查找,直到最顶端的全局作用域,因为js是词法作用域,在写代码阶段就作用域就已经确定了,换句话说,是在函数定义的时候确定的,而不是执行的时候,所以a函数是在全局作用域中定义的,虽然在b函数内调用,但是它只能访问到全局的作用域而不能访问到b函数的作用域。
点击查看答案
undefined
点击查看解析
这道题考察的是this的指向问题,箭头函数执行的时候上下文是不会绑定this的,所以它里面的this取决于外层的this,这里函数执行的时候外层是全局作用域,所以this指向window,window对象下没有name属性,所以是undefined。
点击查看答案
{a: {b: 1}}
点击查看解析
这道题很简单,因为assign方法执行的是浅拷贝,所以源对象的a属性会直接覆盖目标对象的a属性。
点击查看答案
undefined、1、2
点击查看解析
点击查看答案
undefined
点击查看解析
点击查看答案
打印出arr数组本身
点击查看解析
函数作为某个对象的方法调用,this指向该对象,数组显然也是对象,只不过我们都习惯了对象引用属性的方法:obj.fn,但是实际上obj['fn']引用也是可以的。
点击查看答案
1、b函数本身、b函数本身
点击查看解析
2.和第一题类似,只是b没有赋值操作,那么执行到这两行相当于都没有操作,b当然是函数。
点击查看答案
2、4、1、1、2、3、3
点击查看解析
1.执行Foo函数的静态方法,打印出2。
2.执行getName,当前getName是打印出4的那个函数。
3.执行Foo函数,修改了全局变量getName,赋值成了打印1的函数,然后返回this,因为是在全局环境下执行,所以this指向window,因为getName已经被修改了,所以打印出1。
4.因为getName没有被重新赋值,所以再执行仍然打印出1。
5.new操作符是用来调用函数的,所以new Foo.getName()相当于new (Foo.getName)(),所以new的是Foo的静态方法getName,打印出2。
6.因为点运算符(.)的优先级和new是一样高的,所以从左往右执行,相当于(new Foo()).getName(),对Foo使用new调用会返回一个新创建的对象,然后执行该对象的getName方法,该对象本身并没有该方法,所以会从Foo的原型对象上查找,找到了,所以打印出3。
7.和上题一样,点运算符(.)的优先级和new一样高,另外new是用来调用函数的,所以new new Foo().getName()相当于new ((new Foo()).getName)(),括号里面的就是上一题,所以最后找到的是Foo原型上的方法,无论是直接调用,还是通过new调用,都会执行该方法,所以打印出3。
点击查看答案
it's Matthew, from England
it's Bob, from England
点击查看解析
Object.create方法会创建一个对象,并且将该对象的__proto__属性指向传入的对象,所以p1和p2两个对象的原型对象指向了同一个对象,接着给p1添加了一个name属性,然后调用了p1的setCountry方法,p1本身是没有这个方法的,所以会沿着原型链进行查找,在它的原型上,也就是person对象上找到了这个方法,执行这个方法会给address对象的country属性设置传入的值,p1本身也是没有address属性的,但是和name属性不一样,address属性在原型对象上找到了,并且因为是个引用值,所以会成功修改它的country属性,接着对p2的操作也是一样,然后因为原型中存在引用值会在所有实例中共享,所以p1和p2它们引用的address也是同一个对象,一个实例修改了,会反映到所有实例上,所以p2的修改会覆盖p1的修改,最终country的值为England。
点击查看答案
2、3、5、4、1
点击查看解析
这道题显然考察的是事件循环的知识点。
js是一门单线程的语言,但是为了执行一些异步任务时不阻塞代码,以及避免等待期间的资源浪费,js存在事件循环的机制,单线程指的是执行js的线程,称作主线程,其他还有一些比如网络请求的线程、定时器的线程,主线程在运行时会产生执行栈,栈中的代码如果调用了异步api的话则会把事件添加到事件队列里,只要该异步任务有了结果便会把对应的回调放到【任务队列】里,当执行栈中的代码执行完毕后会去读取任务队列里的任务,放到主线程执行,当执行栈空了又会去检查,如此往复,也就是所谓的事件循环。
异步任务又分为【宏任务】(比如setTimeout、setInterval)和【微任务】(比如promise),它们分别会进入不同的队列,执行栈为空完后会优先检查微任务队列,如果有微任务的话会一次性执行完所有的微任务,然后去宏任务队列里检查,如果有则取出一个任务到主线程执行,执行完后又会去检查微任务队列,如此循环。
回到这题,首先整体代码作为一个宏任务开始执行,遇到setTimeout,相应回调会进入宏任务队列,然后是promise,promise的回调是同步代码,所以会打印出2,for循环结束后调用了resolve,所以then的回调会被放入微任务队列,然后打印出3,最后打印出5,到这里当前的执行栈就空了,那么先检查微任务队列,发现有一个任务,那么取出来放到主线程执行,打印出4,最后检查宏任务队列,把定时器的回调放入主线程执行,打印出1。
点击查看答案
1、7、6、8、2、4、9、11、3、10、5、12
点击查看解析
说明:以下解析针对的是早期nodejs版本,最新的版本事件循环机制已经和浏览器趋于一致。
这道题和上一题差不多,但是出现了process.nextTick,所以显然是在node环境下,node也存在事件循环的概念,但是和浏览器的有点不一样,nodejs中的宏任务被分成了几种不同的阶段,两个定时器属于timers阶段,setImmediate属于check阶段,socket的关闭事件属于close callbacks阶段,其他所有的宏任务都属于poll阶段,除此之外,只要执行到前面说的某个阶段,那么会执行完该阶段所有的任务,这一点和浏览器不一样,浏览器是每次取一个宏任务出来执行,执行完后就跑去检查微任务队列了,但是nodejs是来都来了,一次全部执行完该阶段的任务好了,那么process.nextTick和微任务在什么阶段执行呢,在前面说的每个阶段的后面都会执行,但是process.nextTick会优先于微任务,一图胜千言:
理解了以后再来分析这道题就很简单了,首先执行整体代码,先打印出1,setTimeout回调扔进timers队列,nextTick的扔进nextTick的队列,promise的回调是同步代码,执行后打印出7,then回调扔进微任务队列,然后又是一个setTimeout回调扔进timers队列,到这里当前节点就结束了,检查nextTick和微任务队列,nextTick队列有任务,执行后打印出6,微任务队列也有,打印出8,接下来按顺序检查各个阶段,check队列、close callbacks队列都没有任务,到了timers阶段,发现有两个任务,先执行第一个,打印出2,然后nextTick的扔进nextTick的队列,执行promise打印出4,then回调扔进微任务队列,再执行第二个setTimeout的回调,打印出9,然后和刚才一样,nextTick的扔进nextTick的队列,执行promise打印出11,then回调扔进微任务队列,到这里timers阶段也结束了,执行nextTick队列的任务,发现又两个任务,依次执行,打印出3和10,然后检查微任务队列,也是两个任务,依次执行,打印出5和12,到这里是有队列都清空了。

js面试题

1.eventLoop

2.setTimeout 误差原因

3.深浅拷贝

4.跨域原因及解决方案

5.css放在头部,js放在尾部

6.css触发bfc

7.webpack plugin和loader区别

8.前端优化

9.协商缓存

10.长列表优化

11.webview交互

12.vue响应式原理

13.原型

14.算法题:数组中有n个元素,排列

EventLoop是计算机系统的运行机制,js就是运行这个机制,因为js是单线程语言,所以一旦遇到一个耗时很长的任务就会卡住,js为了解决这个问题就有了EventLoop
Event Loop是一个程序结构,用于等待和发送消息和事件。
就是在程序中有了两个线程,一个负责应用本身,主线程,另一个负责主线程和其它进程,称为EventLoop

1、js是单线程语言
基本数据类型存放在栈中的简单数据段
引用数据类型存放在堆中的对象
因为定时器是宏任务,如果执行栈的时间大于定时器花费的时间,那么定时器的回调在 宏任务(macrotask) 里,来不及去调用,所有这个时间会有误差。所以就会有误差
宏任务是宿主发起的比如script,setTimeout

css放在头部是因为页面加载html生成dom树的时候就可以同时对dom树进行渲染,防止闪跳,白屏
js放在尾部是因为js会修改dom树,需要一个稳定的dom树

BFC是css的一个布局概念,块级格式化上下文

浮动float不为none的时候
定位为position:absolute和fixed的
display的时候
overflow不为visible

解决浮动父元素坍塌问题
解决自适应布局的问题
解决外边距垂直方向重合问题

阅读更多 >>>  常见数据库面试题,史上最全的数据库面试题

loader是文件加载器,运行在nodejs中,并对文件进行打包,压缩转换
plugin是插件,用于拓展webpack的功能

浅拷贝有两种定于,第一种是赋值,第二种是拷贝对象的第一层属性,深层还是一样的
深拷贝是指将对象拷贝一份,无论如何修改都不会改变原有的

响应式原理就是当数据发生改变的时候视图也会跟着更新
VUE是利用了Object.defineProperty的方法里面的setter 与getter方法的观察者模式来实现。

什么是跨域飞行

跨域飞行:跨越区域的飞行的模式
在人类历史的长河里,对飞行的向往和尝试,从来没有停止过,但哪怕是在科技如此发达、横渡远洋不再是梦的今天,我仍然觉得动力三角翼,是实现我们最原始飞行梦的发明。
动力三角翼也称动力悬挂滑翔机,是航空运动领域中最受欢迎的一种轻型动力的飞行器,70年代在欧洲兴起,90年代正式引入中国,体验感极佳,安全且易操纵,耗油量相当于普通家用轿车,飞行成本低。
?
通常情况下,动力三角翼可供二人乘坐,采用活塞式航空发动机带动螺旋桨推进,机翼与机身通过悬挂方式进行连接,飞行员通过移动机身与机翼的相对重心位置实现操纵。
因机翼具有较高的滑翔性能,即使在失去动力的情况下,动力三角翼飞行器依然可以像鸟儿一样滑翔着陆。
它具有体积小,重量轻,简单易学,安全可靠等特点。
深受飞行爱好者的欢迎。
?
自发明以来,动力三角翼的主要用途涵盖了社会生产生活的方方面面:
不仅广泛应用于旅游、运输、石油化学管道勘察、农用灭虫、森林防火预警、航空拍摄、飞行训练、抢险救灾、警察巡逻、禁伐(渔、猎)等禁区检查、空中指挥、环境监控、特种作战、边远地区的反恐、缉毒查私和通信中继紧急求援等任务,还可满足渔业、农场业、养蜂业、地质勘察业、科学考察业和体育运动等行业的需求。
?
我们简单罗列一下其优点,通过它们,我们就能知道它在飞行类产品中之所以如此热门的原因:
飞行速度慢、高度低、宜观光、航拍等作业;
体积小、占地少,不需专业机场、机库;
开放式座舱,全景式飞行;
起降距离短,滑跑距离在30-80米之间,能在土地、草地、沙滩等野外场地快速起降,选装浮筒或橡皮艇可在水面起降,选装滑板后可在沙滩、雪地起降;
整机价格低廉;
属悬挂运动器材,无需办理通用航空执照;
驾驶操纵简单,充分享受飞行乐趣;
小车中心位置设计低,具有极佳的安全性;
可以折叠,易于运输和存放,一名熟练的滑翔者把它从车上卸下到安装预备好只需要15分钟左右。它的快速拆装折叠非常方便其进行车载、船载和航空运输;
有令人羡慕的安全记录等等等等,可以说优点数不胜数。
?
近年来,我国经济的快速发展和国家低空空域的不断开放,学动力三角翼的人也越来越多了。
各地航空俱乐部及飞行基地如雨后春笋般涌现,动力三角翼驾驶员已然成为目前航空运动产业中十分稀缺的人才。
那说到动力三角翼的操作,究竟有些什么样的注意事项呢?我们今天就为大家进行一个简单的介绍。
?
首先,就像前文提到的,动力三角翼一般都很轻,空机重量一般只有150公斤左右,最大起飞重量不超过500公斤。
又由于动力三角翼的所有载荷重量都在三角翼下挂着的小车上,因此可以粗略的计算大约2/3以上的重量都集中在动力三角翼的下部。
动力三角翼飞行稳定性的问题也就有了着落:动力三角翼天然像一个钟摆一样,机翼提供向上的升力,小车提供向下的拉力,动力三角翼天然地可以维持正向的飞行状态,不会左右侧倾。
?
▲①动力三角翼的翼面与悬挂的小车之间由一点连接,连接点可前后左右摆动;②三角形操纵框与翼面刚性连接,移动操纵框可实现重心的移动,达到操控目的;③后轮上方竖起的翼面充当垂直尾翼的作用,用来稳定三角翼的航向。
想知道转弯和升降是怎么实现的吗?
当飞行者在空中向右推操纵框架时,实际上也是把自己和小车推向了左侧,重心向左移动,动力三角翼就会逐渐进入向左的坡度然后开始转弯;
反之向左推操纵框,重心就会移向右侧,进入向右的转弯;
如果向前推操纵框,飞行者和小车会向后移动,重心后移,翼面迎角增大,动力三角翼上升;
反之后拉操纵框三角翼就会开始下降。
?
第三,动力三角翼还有一个隐藏的垂尾,很多动力三角翼会在后起落架上方竖起一个翼面,在飞行中这个翼面就充当了垂直尾翼的角色。
不要小看这个翼面,当缺少它的时候,转弯很可能会出现侧滑,即飞机向转弯的内侧横向滑动,但转弯角度却不够大的情况,使操控变得困难。
增加这两个“垂尾”后,这种侧滑情况会得到很大改善,使机头一直沿着预计的转弯轨迹飞行,操控变得得心应手。

Node.js 的面试题是怎么样的

  考察点主要根据其简历涉及的部分来。如果简历里比较泛泛,一般会先考察http相关的基础、基本的stream、稍复杂的异步流程处理。大部分泛泛之辈在这里就挂了。
  考察过程一定是写代码,判定初级、中级高级主要根据其写代码的表现。比如coding速度、对api和常见库的选择和熟悉程度、遇到问题是如何调试的、边界情况和错误处理等等。基本上这些已经足够判定的了。
  目前尚未遇到纯后端的候选人简历里写nodejs的。即使是全端工程师,也主要是应用开发为主,所以不会专门问运维相关的题目,除非候选人的简历里有相关经验。
  另外,前端光会js是不够的,除非候选人计算机基础特强,学习能力考察下来也ok,那么我判断其可以很快掌握html/css等其他领域的必备技能。否则也过不了。
  而如果是后端,仅仅会js是肯定不行的(目前还没有遇到过这样的人)。我个人对后端工程师的看法,在主力语言之外,至少还要熟练掌握其他与其主力语言有较大不同的编程语言1门。

面试官问我为什么不用nodejs?

一般来说面试我都记下印象深刻的面试题,其他感觉都没什么好记的,但是今天这个面试的过程感觉是我职业生涯中比较有意思的一次面试,遂分享出来。  今天顶着大太阳出去面试,找了好久终于找到了这家公司的位置,貌似是集体办公区域,就是一层楼有N个公司在办公,也没什么隔断。心想创业公司吧,这样也正常。在这之前已经面过三家公司都挺顺利,公司规模都还可以,还有一家一面也是过了等二面。之所以来这家公司面呢是因为对公司的产品还挺感兴趣的,想来看看。  然后到地方后面试官先给了我一份卷子做,都是些很简单的题,写完后等了好久面试官来了,开始进行面试。面试官先看了下我的简历,然后说你怎么两年才做这么4个项目,尤其是第一家才1个项目。我说外包公司项目多,没必要挨个写上,写上最近一家公司的项目,和之前公司代表性的项目就行了。然后他就教育了我一番,说怎么写这么点儿呢,很容易让人觉得你啥都没做,做过的都得写上。我之前一直以为我这种两年多经验的写一页简历足够了,不过他说了下我觉得确实可以考虑考虑多写一些。。。不过老实说我在想。。难道他毕业四五年了还把刚毕业的项目往简历上写?  吐槽完项目。面试官不知道为什么看着我的简历以为是培训班出来的,然后就旁敲侧击的问我毕业是否有参加过什么培训啊。我满脸黑线,我简历写的我第一份工作毕业就进去的,而且我项目都是专业领域性很强的项目,这是从哪儿看出来的。然后这面试官又问我那你大学都学什么课程啊,我又耐着性子解释了一圈。然后他看问不出啥的就没问了。然后就问了一个项目有关的正常问题。开始问我技术了。最后问我有什么想问的,我就照例问了下公司技术栈,然后他说后端用java nodeJs ,我就问为什么后端会用两种技术栈? 然后他回答道,这么用肯定是处于公司技术考量啊,巴拉巴拉的,反正最后也没说个明白为啥会用两种技术。。然后这个时候提了一嘴既然采用nodeJs是觉得更加方便为什么不考虑考虑使用Python。老实说我觉得我这句话作为大家都是技术人员,技术探讨性的问题应该很正常吧,结果这句话不知道为什么又把他戳高潮了,他直接回到 为什么要用Python?我在严肃的和你讲公司技术栈,你觉得这样好吗? 你觉得这样提问好吗?你这样随意的一问觉得合适吗?   最后伴随着这几个疑问,面试结束了。。。老实说我被面的有点稀奇古怪的,尽管他问的问题我觉得我应该全都回答上了,但看他的样子似乎很不高兴。。。面完后我的内心状态应该如下吧

面试官说我的技术栈有问题,怎么办?

如果面试官认为您的技术栈有问题,那么您可以考虑以下几点:
1. 询问具体问题:面试官可能会提供一些具体的反馈或建议,您可以向他们询问更多细节,以便更好地了解自己的不足之处。
2. 自我评估:您可以对自己的技术栈进行自我评估,确定自己在哪些方面需要改进。这可能涉及学习新的技能或深入研究现有的技能。
3. 寻求反馈:您可以向其他程序员、导师或同行寻求反馈,了解他们在类似情况下的建议和经验。
4. 制定计划:一旦您确定了自己的不足之处,就可以开始制定计划来改进。这可能包括参加培训课程、阅读相关书籍或文章、参与开源项目等。
最重要的是不要灰心丧气,认识到自己的不足并采取积极的措施来改进是成长的关键。
记一次有趣面试经历
  一般来说面试我都记下印象深刻的面试题,其他感觉都没什么好记的,但是今天这个面试的过程感觉是我职业生涯中比较有意思的一次面试,遂分享出来。
  今天顶着大太阳出去面试,找了好久终于找到了这家公司的位置,貌似是集体办公区域,就是一层楼有N个公司在办公,也没什么隔断。心想创业公司吧,这样也正常。在这之前已经面过三家公司都挺顺利,公司规模都还可以,还有一家一面也是过了等二面。之所以来这家公司面呢是因为对公司的产品还挺感兴趣的,想来看看。
  然后到地方后面试官先给了我一份卷子做,都是些很简单的题,写完后等了好久面试官来了,开始进行面试。面试官先看了下我的简历,然后说你怎么两年才做这么4个项目,尤其是第一家才1个项目。我说外包公司项目多,没必要挨个写上,写上最近一家公司的项目,和之前公司代表性的项目就行了。然后他就教育了我一番,说怎么写这么点儿呢,很容易让人觉得你啥都没做,做过的都得写上。我之前一直以为我这种两年多经验的写一页简历足够了,不过他说了下我觉得确实可以考虑考虑多写一些。。。不过老实说我在想。。难道他毕业四五年了还把刚毕业的项目往简历上写?
  吐槽完项目。面试官不知道为什么看着我的简历以为是培训班出来的,然后就旁敲侧击的问我毕业是否有参加过什么培训啊。我满脸黑线,我简历写的我第一份工作毕业就进去的,而且我项目都是专业领域性很强的项目,这是从哪儿看出来的。然后这面试官又问我那你大学都学什么课程啊,我又耐着性子解释了一圈。然后他看问不出啥的就没问了。然后就问了一个项目有关的正常问题。开始问我技术了。
  第一个技术就问我spring框架,然后问我spring主要注重哪些技术,我说了就依赖注入和自动化配置,然后这人问我如何学习spring,我说看了spring实战,深入理解spring架构,然后还看了源码,然后这人说你看了官方文档吗,我说看了小部分,然后他说你怎么不多看官方说明文档呢,我说我更多喜欢直接看看源码设计,而且官方文档更多就是说明书的意思,我觉得用来入门还行,要真正了解肯定还是要深入底层去看下。然后争论了一番后他问我springboot自动化配置如何实现的。我从实现原理,源码流程说了一圈,我估计他应该不懂这块儿,然后我说完后他和我说你觉得看这些东西用处大吗,你为什么不看官方文档。我当时真是满脸黑线,合着这官方文档在他眼中是圣经啊。然后又问我springboot如何实现的tomcat启动,我源码解释了一圈后我估计他还是不懂源码这块儿,所以又和我死磕说你这些东西为什么不看官方文档说明呢。。嗨,我第一次看到对官方文档如此执着的人..。。当然了他举了个有意思的例子,说比如你买了个冰箱,你不看说明书你怎么知道如何使用呢。。我真的很想说我看过这台冰箱深入介绍的几本书并且连内部零件构造都了解你觉得我不会用这台冰箱吗。。
  然后框架就没问了,老实说我觉得可能是他也不太了解。。然后就问我sql了,说有没有用过索引,sql优化。我说了一些,然后他说下mysql索引类型呢? 我说你指的哪种类型,是hash/b+tree ,还是聚集索引/非聚集索引,还是普通索引/唯一索引/主键索引/..... 这种。然后我估计他对前两个应该不了解,然后恼羞成怒的来了句你觉得我问的是哪个? 我去,这个我哪能知道。然后我就说了下 hash/b+树索引,然后这个人来了句b+树你觉得是什么,是一种算法,还是xxx,我当时很无语,名字都叫树了这难道不应该是一种数据结构吗。 然后又解释了一圈我感觉他可能也不了解这块也就没问了。然后问我算法。
  其实就简单的问了句,你了解哪些排序,我说冒泡排序,插入排序,快排,堆排序.....,然后这面试官嘲讽的笑了一声,我赶紧回想了哪个有问题,结果想了下没想到哪个字说的有问题我就问 你为什么笑,然后他说堆排序是什么东西。老实说听到这句话我是真的很想直接走的,但是想下这对不起我请的一上午假。然后我很克制的说了句,你不知道不代表没有,这是任何一本讲数据结构与算法的书都应该会讲到的东西,建议去百度下。然后这个时候我估计他本就有点儿恼羞成怒的心情被彻底点着了,然后开始问我jmm。哦对了,他看着我写笔试题的时候排序那儿说了句这是什么排序。(我觉得快排方法应该还是挺好认的)
  jmm问我五大数据区域,我说了后最后我提了一下直接内存,然后这人我估计也不懂,然后就开始说我问你这个了吗?我让你说五大区域你为什么提这个? 你有听清楚我的问题吗? 我当时就???,合着我这多提了一嘴直接给戳高潮了。。。然后赶紧闭嘴了,让他接着问后面的问题。
  然后问了我期望薪资,我说了个期望薪资,结果这人说,你觉得你在项目中能承担部门负责人? 还是项目经理? 合着我期望的薪资在这家公司是部门负责人才有的待遇,看这意思应该是觉得我漫天要价。我觉得我要再说我已经有的三个offer都比我刚提的要多怕不是能让他当场爆炸。。当然了,为了不自讨没趣我就说我只能承担个中级开发吧。。。
  最后问我有什么想问的,我就照例问了下公司技术栈,然后他说后端用java nodeJs ,我就问为什么后端会用两种技术栈? 然后他回答道,这么用肯定是处于公司技术考量啊,巴拉巴拉的,反正最后也没说个明白为啥会用两种技术。。然后这个时候提了一嘴既然采用nodeJs是觉得更加方便为什么不考虑考虑使用Python。老实说我觉得我这句话作为大家都是技术人员,技术探讨性的问题应该很正常吧,结果这句话不知道为什么又把他戳高潮了,他直接回到 为什么要用Python?我在严肃的和你讲公司技术栈,你觉得这样好吗? 你觉得这样提问好吗?你这样随意的一问觉得合适吗?
  最后伴随着这几个疑问,面试结束了。。。老实说我被面的有点稀奇古怪的,尽管他问的问题我觉得我应该全都回答上了,但看他的样子似乎很不高兴。。。面完后我的内心状态应该如下吧
  最后奉劝大家一句,创业型公司一定慎重考虑。
如果面试官指出您的技术栈有问题,那么您可以考虑以下几点:
1. 了解面试官的反馈:首先,您需要明确面试官具体指出了哪些方面有问题。这有助于您更好地理解问题所在,并采取相应的措施来解决它。
2. 自我评估:接下来,您需要对自己的技术栈进行自我评估。您可以问自己一些问题,例如:我是否掌握了这个职位所需的所有技能?我是否了解当前行业的最新趋势和技术?我是否有足够的项目经验来证明我的能力?
3. 学习新技能:如果您发现自己的技术栈存在不足之处,那么您可以考虑学习新的技能或深入研究现有的技能。这可以通过参加课程、阅读相关书籍或博客文章、参加社区活动等方式来实现。
4. 展示您的优势:即使您的技术栈存在不足之处,您仍然可能有其他方面的优势。在面试中,您可以强调这些优势,并解释它们如何使您成为一个有价值的候选人。
总之,当面试官指出您的技术栈存在问题时,不要感到沮丧或气馁。相反,将其视为一个机会,以改进自己的技能和知识,从而提高自己的竞争力。

如何面试前端工程师?

面试前的准备工作
1.用心写好简历
简历是你向面试官展示自己的第一张名片。简历的好也坏直接会影响你在面试官心中的第一印象(这个一点也不夸张)。
  2.提前了解所面试的企业,做到知己知彼。
3.巩固所学知识
  前端工程师至少应该掌握些基本的知识,才能有效地完成自己的工作。一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
  DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
  DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
  事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
  XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
  严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
  盒模型——外边距、内边距和边框之间的关系,IE 8以下版本的浏览器中的盒模型有什么不同。
  块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
  浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
  HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
  JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
  4.看前端开发面试题
  目前网上有好多的前端开发面试题,有时间可以看一看,这些题有助于你对相关知识有一定的了解,最主要的是,面试碰到了相关的题,你不会太紧张,你会有些许的自信。
面试要注意的细节
1.时间观念
   不管是面试官或被面者都需要有一定的时间观念,不能迟到。如果你有事情会耽搁,应该事先通知彼此。没有时间观念,一个简单的细节,有时会让你错失一个机会。
  2.真诚面对
  当你的技术不能达标时,只要你的人品达标,也能为自己增加不少分数。
  3.尽量展示自己的实力
  每个人都有自己好的一面也有自己不足的一面,在面试的时候,应该尽量展示自己优秀的一面。对于校招生或实习生而言,面试官真的不太在乎你所掌握的技术如何?而更再意的是你是不是有发展的潜力。你处事的能力,学习的能力,解决问题的能力等等。而自己问题都是在和你聊天的过程中去掌握的,所以你应该借此机会,向面试官展示你这方面的软实力。
一般来说面试会遇到的问题:
  做过最满意的项目是什么?
  项目背景
  为什么要做这件事情?
  最终达到什么效果?
  你处于什么样的角色,起到了什么方面的作用?
  在项目中遇到什么技术问题?具体是如何解决的?
  如果再做这个项目,你会在哪些方面进行改善?
面试中的总结
面试总结会让自己更认识自己。虽然你有面试的机会,但这并不代表你能通过面试,那么每一次的面试失败就是你下一次面试成功的铺垫。
  技术:技术方面缺少什么?面试官看重的是什么?
  软实力:自己拿分项是哪些?自己丢分项是哪些?自己面试过程的沟通能力如何?
  失败原因:面试失败原因是什么?是由于技术不足?还是其他原因造成自己面试失败?还可以去思考更多的为什么?…
近来几个月,一直在努力寻找前端战友,未果,一路的招聘经历下来,心生不少感慨, 一直都很小心翼翼的,怕错失了高人,又更加怕失误把关不够招到不合格的同学进来公司,对公司对项目造成某些影响。
面试前端工程师对我来说是一件非常有意思的事,因为面试过程很大程度上也是自我提升的过程。无论大公司还是小公司,之所以在如何招聘到真正有能力的 前端工程师方面会遇到同样的问题,就是因为负责招聘的那些人不知道自己公司需要什么样的人,结果问问题时也问不到点子上。经过这几年在行业里的摸索,我总 结出了自己的一套很有效的面试前端工程的方法。
有的应聘者说我不好对付,但留给他们这样的印象也并非我所愿。我觉得之所以他们说我不好对付,主要是因为我问他们问题时问得太细了。以前我曾专门写过一些 东西,告诉应聘者怎么才能通过我的面试(Surviving an interview with me)以及优秀的前面工程师应该具备什么样的素质(What makes a good front end engineer?),而我的面试可以说完全是按照那两篇文章的标准进行的。我不会问一些特别偏门的问题,也不认为出几道逻辑题就能考出人的真实水平。我 唯一的想法就是确定你能否胜任我们要招的这个职位。为此,我需要简单地考察如下几个方面。
基本知识
我们生活在互联网时代,你想知道的任何事情几乎都能在15分钟内找到相关信息。可是,能找到信息并不等于你会使用它。我认为所有前端工程师至少都应 该掌握某些基本的知识,才能有效地完成自己的工作。如果一遇到问题,就停下工作上网四处搜索解决方案,怎么可能保证按期完成工作呢?听听,还有谁在说“我 不知道,但我可以上网搜到。”请这些同学把手举起来,让大家认识一下(immediately raises a flag for me.)。下面我列出一些基本的知识点,这些都是我认为一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
盒模型——外边距、内边距和边框之间的关系,IE 8以下版本的浏览器中的盒模型有什么不同。
块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
重申一下,上述这些知识点都应该是你应该“想都不用想”的东西。我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。虽然上面列出的这些知识点并没有面面俱到,但我觉得你至少应该掌握这些,才有可能跟我坐到一间办公室里来。
少量提问
我非常赞同面试者问的问题越少越好。反复问应聘者各种问题既不公平,也很无聊。我在任何一次面试中,通常只问三个大问题,但每个问题又会涉及我所能想到的多个方面。回答每个大问题一般要经过几个步骤,这样我就可以在每个步骤中穿插着问一些小问题。比如说:
现在有一个正显示着Yahoo!股票价格的页面。页面上有一个按钮,你可以单击它来刷新价格,但不会重新加载页面。请你描述一下实现这个功能的过程,假设服务器会负责准备好正确的股票价格数据。
这个问题牵扯到一组我想要考察的基本知识点:DOM结构、DOM操作、事件处理、XHR和JSON。如果我要求你对换一种处理股票价格的方式,或者 让你在页面中显示其他信息,就可以把更多的知识点包括进来。对于经验比较丰富应聘者,我也可以自如地扩展要考察的知识范围,最简单像JOSN与XML的区 别、安全问题、容量问题,等等。
我还希望应聘者给出的任何解决方案中都不要使用库。我想看到最原生态的代码,你就当页面中没有包含任何库。你说你对哪个库了解多少多少,但我不能把 关于库的知识作为评判能力的因素,因为库是会随时间变化的。我需要的是真正理解库背后的机制,特别是能够徒手写出一个自己的库的人。
解决问题
做为一名前端工程师,最值得高兴的事莫过于解决同一个问题会有很多种不同的方法,而你要做的就是找出最合适的方法来。我在提问的时候,经常会在应聘 者解释完一种方法后问他们还有没有第二种方法。此时我会跟他们说,假设你的这个方法由于种种原因被否决了,那么你还能不能给出另一种方法。这样做可以达到 两个目的。
首先,可以测试出他们是否在毫无意义地复述书本中的东西。不能不承认,某些人确实有过目不忘的天赋,听他们在那里滔滔不绝地讲,你会觉得他们什么都 明白。可是,只要一跟这些人谈到怎么查找方案无效的原因,以及能否拿出一个新方案来,他们往往就傻眼了。这时候,如果我听到“我不明白这个方案为什么不够 好”之类的反问,心里立刻就明白我的问题已经超出了他们的能力范围,而他们只是想拿自己死记硬背的结论来蒙混过关。
其次,可以测试出他们已经掌握的(还是那句话,“想都不用想”)浏览器技术知识。如果他们对浏览器平台的核心知识有较好的理解,想出解决同一问题的不同方案根本没有那么难。
对一名前端工程师来说,这绝对是最重要的能力。前端工程师在工作中遇到本该如此却并未如此的难题(说你啦,IE6),应该说是一件很平常的事。一个方案无效就无计可施的人,做不了前端工程师。
考核应聘者解决问题能力的另一层原因,与我的个人喜好有关。在搞清楚应聘者知道什么不知道什么之后,我就会想着问一个他们知识领域之外的问题。这样 做的目的,就是想看看他们怎样运用已有的知识解决新问题。在解决问题的每一步,我也准备了一些提示,以防有人会卡壳打艮(在我面前15分钟一言不发,对我 评价这个人毫无帮助)。我真正感兴趣的,是他们能够从上一步前进到下一步。我希望看到一个人就在我眼前学到新知识。
注意:所有问题都与浏览器技术相关。我不相信出几道抽象的逻辑题,就能够考出某人解决Web技术问题的能力。在我看来,这无异于让素描大师画肖像(或者让刘翔跟博尔特同场竞技),没有意义,也得不到任何有价值的信息。
有激情
要成为一名优秀的前端工程师,最重要的莫过于对自己做的事要有激情。我们技能都不是从学校中或者从研讨会上学来的,因此前端工程师必须具备自学能 力。浏览器技术的变化可谓日新月异,所以也只有不断提升自己的技能才做得到与时俱进。我虽然不能强迫谁必须多看博客、不断学习,但想应聘前端工程师的人恐 怕还是必须这么做的。
你怎么知道谁对这种工作有没有激情?实际上非常简单。我只问一个简单的问题:“目前你对什么Web技术最感兴趣?”这个问题永远不会过期,而且也几 乎不可能出错……除非你答不上来。就眼下来说,我希望你对这个问题给出的技术中包括WebSocket、HTML、WebGL、客户端数据库,等等。只有 对Web开发充满激情的人,才会坚持不懈地学习新知识、掌握新技能;这些人才是我真正想要的。当然,我会让他们详细解释自己提到的技术,以保证他们不是随 口说了几个时髦的新词汇。
最后一点
计算机科学或者Web设计方面的知识当然也有用,但那都是基本知识之外的东西。只要基本知识在那儿了,一切就都有了基础,想扩充知识面也不难。可 是,如果等到正式上班以后,还得从头学习基本技能,那种难度是不可同日而语的。另外,高级前端工程师与一般工程师相比,肯定需要掌握更多的技能。而面试几 乎没有经验大学毕业生,同样也会有一套完全不同的程序。我在这篇文章里列出来的都是一些最基本的东西。
对于那些还没有多少面试经验的人,我总是喜欢告诉他们,面试完了只要问自己一个问题就行:你想以后跟这个人在一起共事吗?如果不管为什么,回答是不,那就是不。
前端工程师不一定需要懂设计方面。倘若有这等要求,前端工程师岂不是一项除其本身特征性工作外还包含用户界面设计、视觉设计、业务逻辑及交互动画设计师等工作的职称了么!
前端工程师,主要工作内容与用户界面的表现紧密联系,但均为在图形上或以其为基础通过某种实现方式去正确、准确呈现什么。之所以以“主要工作”修饰,是因为 node.js / io.js 的出现与发展致使前端被引入服务器端性质的工作内容。
在能力方面:
对 HTML / CSS / JavaScript 具有专家级别的知识;
有较熟练使用 AngularJS / Ember.js / jQuery 或者其它类库的经验;
较熟悉第三方组件(插件)生态环境及具体案例;
有较熟练使用 Jade / Swig / Handlebars / Mustache 或者其它模板引擎的经验;
有较熟练使用 SASS 或者其它 CSS 预处理器的经验;
有较熟练使用 CoffeeScript 的经验;
对 CSS / JavaScript 设计模式有很好的认识及应用;
对常用数据结构和算法熟悉;
有使用 GruntJS / GulpJS 任务运行器的经验;
有使用 Yeoman 生成器的经验;
有诸如 Bower / Volo / JSPM 等前端静态资源包管理器使用经验;
熟悉本地及远程(真机)调试操作;
有 Git 的使用经验;
意识驱动行为,所以:
有自己的技术信仰;
有渴望尝试新技术的强烈愿景及较强的主观学习、客观探索能力;
拥有令人难以置信的关注细节的精神;
在诸如 Github、Sitepoint 等这样的技术社区活动;
因为你不是一个人工作,并且要对一个产品付之责任心,所以:
有良好的编程风格和文档习惯;
对模块化开发及相关标准有很好的认识及应用;
有对网页标准和标准制定机构重要性较深刻的理解;
建站过程中考虑其它诸如UI、安全性、高性能、SEO、可维护性以及技术因素等方面;
有跨浏览器(主:兼容性)、跨设备(主:响应式)开发并测试页面的经验;
对网格在WEB设计中的应用有深刻的理解,以及具备系统(有组织)地实现出来的能力;
能够独立工作并做出正确的抉择;
能够适应不断变化的更新 / 扩展 / 改版需求,同时处理多个项目;
能够提供准确的定时估计工作(适应准时交付管理法则);
有与服务器端程序开发人员协同工作的经验;
能够(熟练)阅读英文资料;
有一定的工作压力承受能力;
然后再为自己从长远打算及加分:
有 NodeJS Web / 服务器 / 客户端应用程序设计、开发、优化经验;
有 MangoDB / Redis 等No SQL 数据库设计、实现、维护经验;
有使用 PhoneGap / Apache Cordova 进行移动应用开发经验;
有浏览器 Addon 扩展(以扩展的形式添加一些为提高用户体验的附加功能)开发经验者;
从前端开发要掌握的技术来讲,前面已经说得差不多了。我主要想从面试者的角度谈一谈看法。
如果是我面试,就给应聘者一个开放的项目,可以提供服务器端API或数据服务,限定一周时间,这叫试做。然后,根据评审确定入围的人,再面试。面试可以围绕项目展开,首先让面试者围绕HTML、CSS和JavaScript讲一讲设计思路、实现过程、遇到了什么困难,如何解决的,最终实现方案与设计有什么出入,有什么收获,等等。然后再根据项目中的不足有针对性地提问测试,考察面试者的实际经验和解决问题的能力。解决实际问题的能力最重要。
总之,实际的开发工作不同于考试,考试设计得越接近实际工作需要,结果才可能越真实,才可能真正招到想要的人。
从前端开发要掌握的技术来讲,前面已经说得差不多了。我主要想从面试者的角度谈一谈看法。
如果是我面试,就给应聘者一个开放的项目,可以提供服务器端API或数据服务,限定一周时间,这叫试做。然后,根据评审确定入围的人,再面试。面试可以围绕项目展开,首先让面试者围绕HTML、CSS和JavaScript讲一讲设计思路、实现过程、遇到了什么困难,如何解决的,最终实现方案与设计有什么出入,有什么收获,等等。然后再根据项目中的不足有针对性地提问测试,考察面试者的实际经验和解决问题的能力。解决实际问题的能力最重要。
总之,实际的开发工作不同于考试,考试设计得越接近实际工作需要,结果才可能越真实,才可能真正招到想要的人。
随着时代的发展,很多新兴的就业职位随之产生。前端工程师将就是随着互联网的快速发展而产生的。其实在很多人的观念里,前端工程师也就是一个切页面的而已,他们也就是会html、css、javascript这些没有任何技术含量的网页制作而已。然而随着技术飞速发展,人们对这些技术的要求也是越来越高,如果只凭着一个人来把所有的事情都解决是很困难的,所以这个时候前端工程师就开始发挥着他们很大的作用了。
那我们应该如何来面试前端工程师呢?
首先我们要了解到一般关于工程师的面试都是被分为问答面试和代码面试的。当然也有很多公司会增加一些其他的面试。不过这就主要看公司的情况而来。一般前面一二轮的面试都是主要是技术方面为主。后面几轮就是你的老板要和你聊聊你的待遇和规划的问题了。接下来就让我们来聊聊面试前端工程师的一些技巧吧。
扎实的理论基础
如果你想成为一个优秀的前端工程师你就必须要有一些基础工程师所必需的具有的扎实的理论基础。这些扎实的理论基础是你面试前端工程师的前提。如果你不具备这些理论上的知识想必你连面试的资格都没有。所以想面试成功你就需要掌握这些有关的理论知识。
较强的考察能力
关于这个前端工程师的面试,考察能力时候很重要的。一般呢,我们可以总结为前端工程师是有关基础理论和能力的综合。而这个里面的能力就包含这个考察能力这个考察能力呢一般就是指工程师的编程能力。
一般面试官都是通过案例问题来检验每个人的考察能力的。这个所谓的案例问题就是在编程上的一些算法题。这一般有些小复杂所以就需要你较强的考察能力来配合了。
谈吐要大方得体
在我们在面对面试官时我们千万不要紧张。在进行自我介绍时我们要努力做到自信大方、吐字清晰。我们在自我介绍时要用简明扼要的话语来介绍自己,突出自己的优点表明自己的求职意向。你要通过寥寥数语把自己的优势都向面试官介绍清楚。记住不必要的话语要少说。
好了关于如何面试前端工程师这个话题我就聊到这了。希望我的回答能对你有所帮助。

阅读更多 >>>  sql数据库经典面试题,记录一次面试题,使用Sql进行递归

求推荐一下关于Web前端的相关资料!

web前端现在前景好,人才需求大,工资也高。如果你想要专业的学习web前端,更多需要的是付出时间和精力,最好还是选择面授的。线上的基本都是视频,学不会的。
学web前端一般在2万左右,4-6个月左右的时间。应该根据自己的实际需求去【千锋】实地看一下,面授的,先好好试听之后,再选择适合自己的。只要努力学到真东西,前途自然不会差。
一)前端基本功
前端相关的基础知识
《HTTP/3 来了 !未来可期》
《你可能已经忽略的 git commit 规范》
《手写一个 WebSocket 协议》
《5000字解析:前端五种跨平台技术》
《一篇搞定移动端适配》
《Chrome DevTools中的这些骚操作,你都知道吗?》
《Chrome 运行时性能瓶颈分析》
《当浏览器全面禁用三方 Cookie》
《无形中提高工作效率的 Chrome 插件》
《还分不清 Cookie、Session、Token、JWT?》
《你连 HTTPS 原理都不懂,还讲“中间人攻击”?》
《npm install 原理分析》
《不容错过的 Babel 7 知识汇总》
《一文搞懂 Web 中暗藏的密码学》
《解读HTTP/2与HTTP/3 的新特性》
CSS
《那些不常见,但却非常实用的 CSS 属性》
《面试官:你可以用纯 CSS 判断鼠标进入的方向吗?》
《二营长,快掏个CSS出来给我画个井字棋游戏》
《CSS 故障艺术》
《我写CSS的常用套路(附demo的效果实现与源码)》
《来自新时代的 CSS》
《你还不会 CSS 动画?》
JavaScript
《谁说前端不需要懂二进制》
《你不知道的 Blob》
《Javascript常用的 60 余种工具方法》
《你可以这样优化 if-else 代码结构》
《JS 图片压缩的实现思路》
《一个简洁、有趣的无限下拉方案》
《请你实现一个大文件上传和断点续传》
《从 ES6 到 ES10 的新特性万字大总结》
《JavaScript 手写代码无敌秘籍》
TypeScript
《通俗易懂的 TypeScript 入门教程》
《用 TypeScript 编写 React 的最佳实践》
《一文读懂 JS 装饰器》
《你真的懂 Promise 吗?》
《Typescript 那些好用的技巧》
《Typescript 严格模式有多严格?》
二)前端框架、工具、库
React
《用 TypeScript 编写 React 的最佳实践》
《2020 年你应该知道的 React 库》
《5 个技巧助你编写更好的 React 代码》
《10个案例让你彻底理解React hooks的渲染逻辑》
《组件演进史:从Mixin到HOC,再到Hook》
Vue
《1.1万字从零解读Vue3.0源码响应式系统》
《重头来过的 Vue 3 带来了什么?》
Nodejs
《一杯茶的时间,上手 Node.js》
《深入理解 Node.js 进程与线程》
Deno
《Deno 会取代 Node.js 吗?》
《了不起的 Deno 入门教程》
《推倒 Node 重做,Deno 1.0 来了》
Webpack
《一文搞懂 Webpack 多入口配置》
GraphQL
《GraphQL-前端开发的利剑与桥梁》
《GraphQL 入门看这篇就够了》
《前端工程师应该了解的 GraphQL》
VS Code《动图演示11个必备 VS Code 插件》
三)面试题精选
《高频前端面试题》
《吐血整理!再来一打 Webpack 面试题》
《前端同学经常忽视的一个 JavaScript 面试题》
《如何轻松拿到淘宝前端 offer》
《三年大厂面试官:二面题》
《十几道含答案的大厂面试题总结》
《如何答一道惊艳面试官的数组去重问题?》
《10 个 CSS 高频面试题,你都会吗?》
《经常被面试官考的 JS 数据类型知识你真的懂吗?》
《面试须知:浏览器相关原理详细总结》
《2019 大龄前端如何准备面试?》
《2018 大厂高级前端面试题汇总》
四)前端开发的职业修炼
《前端如何在项目中做出亮点》
《Facebook 前端技术栈重构分享》
《当前端基建任务落到你身上,该如何推动协作?》
《使用 docker 高效部署你的前端应用》
《关于前端学习路线的一些建议》
《各种场景唤起 App 的骚操作》
《Web 视频播放前前后后那些事》
《你必须要注意的依赖安全漏洞》
《从 12.67s 到 1.06s 的网站性能优化实战》
《网易云音乐前端性能监控实践》
《一个阿里前端工程师的成长之路》
《非常全面的前端协作规范》
《一名合格前端工程师的自检清单》
《从 0 到 1 再到 100:搭建、编写、构建一个前端项目》
希望对你有用,望采纳~

网站数据信息

"nodejs面试题2021,前端面试题2021(JS篇(上))"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:nodejs面试题2021,前端面试题2021(JS篇(上))的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!