1、git常用的命令
2、当git merge发生冲突的时候怎么做
3、提到的图片懒加载,怎么实现,视频懒加载???
4、在一个页面中还有什么提升页面性能的方式呢
5、怎么处理跨域问题,工作中用的多的是什么方式
6、使用代理的时候,出现了跨域 cookie没有带上怎么办
7、要实现可以在弹框中打开多个弹窗,就像是一个多层级的弹框窗口,怎么做
8、ES6的属性
9、let 和 const,为什么const不能变,怎么实现一个const????
10、箭头函数和function区别
11、闭包,用的多吗
12、有用什么原生函数,是用闭包实现的
13、比如bind之类的有用过吗,先说一下bind、apply、call有什么区别吧
14、用原生实现一下bind
15、es5的继承,es6的继承
16、怎么实现跨域啊,上线的项目怎么实现跨域
17、有封装过组件吗,封装过什么组件,怎么做的
18、webpack有用过吗,webpack提供了哪些能力
19、webpack去打包一个js文件的时候,打包出来的js发现太大了,这样加载时间太长,导致白屏时间过长,有什么解决方式
20、let、const、var的区别,块级作用域
21、var变量提升相关(给了一段代码说出各项打印值)
22、箭头函数与普通函数区别,arguments本质是什么,写一个例子
23、构造函数与继承的区别, this的指向问题(给了一段代码指出打印的this值)
24、依次打印下列值,说明执行顺序原因
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
console.log(1); setTimeout(function(){ console.log(2); },0) new Promise(()=>{ console.log(3) setTimeout(function(){ console.log(4); },0) }).then(()=>{ console.log(5) }) setTimeout(function(){ console.log(6); },0) |
25、 事件冒泡与事件捕获,给出一个场景问如何实现
26、cookie与webStorage的区别?cookie适合用作存储嘛,为什么?
27、vue双向绑定的实现原理?
28、vue中如何监听数组?如何监听对象?
29、js有哪些数据类型,存储方式与调用有什么区别?
30、项目中实现登录的具体过程
31、rem 与 em的区别
32、有小程序开发经验嘛?
33、实现100vh中,上、下div固定,中间div高度自适应
34、css哪些属性是默认继承的
35、给数组对象添加一个findDuplicate(n)方法,用于返回该数组中出现频率>=n的元素列表
36、CORS的处理,请求分类
37、跨域如何带cookies
38、cookies权限设置
39、cache-control
40、浏览器缓存
41、事件委托,写法兼容性
42、事件监听
43、css动画实现
44、vue双向绑定,函数式组件
45、em rem、dpi,物理像素,px 区别
46、移动端适配
47、promise 相关问题
48、实现多个promise顺序执行,promise中有异步操作 (手写)
49、原型链继承和组合继承 (手写)
50、判断基本类型和引用类型
51、深拷贝 (手写)
52、layout书写
53、sticky是什么
54、position属性
55、es6说五个新特性
56、<子代选择器和 空格区别
57、reflow和repaint区别
58、fetch是什么
59、promise手写
60、捕获阶段、冒泡阶段 原生js实现
61、ajax手写
62、ajax的state和status区别
63、get、post区别
64、节流、防抖区别,手写
65、数组拍平
66、splice用法
67、对象的解构使用方法
68、asncy-await 代码
69、箭头函数和普通函数的区别
70、HTTP的请求头和响应头
71、块状元素怎么垂直水平居中
72、冒泡函数原理
73、webpack常用配置参数
74、同源政策
75、JSONP
76、原型链指向
77、用户代理(user-agent)你了解吗
78、a组件怎么传给e组件 -- 做题
嵌套关系如下:
1 2 3 4 5 6 7 8 9 |
|
79、有没有用过vue-router和react-router
80、实现一个两栏布局(不止一种方法)
81、实现1个方法find(arr, str),给定字符串数组和子串,查找并返回arr中所有包含子串str的字符串
82、数组扁平化
83、实现1个方法,查找整型数组中第2大的元素并返回。(注意考虑重复元素的情况)
84、给定1个URL数组,分别实现并发及顺序依次执行请求,请求函数为fetch(url)
85、实现1个方法func(work, interval)包装work方法,使work方法在interval间隔内最多执行1次
86、实现一个函数 add(stringNum1, stringNum2),实现对两字符串数值的相加,如 add('1', '9999'),输出'10000'。(leetcode原题,注意优化)
87、实现一个函数 curry,使满足以下场景:
1 2 3 4 5 |
function add(a, b, c) { console.log(a + b + c) } const curriedAdd = curry(add) curriedAdd(1)(2)(3) // output 6 curriedAdd(1)(2, 3) // output 6 curriedAdd(1, 2, 3) // output 6 |
88、说说https,https是怎么加密的?https加密过程
89、数组展开
90、写一个方块平移动画
91、translate,transform,transition区别
92、let a=1;const a=2;a=10 输出什么
93、map foreach 不同点
94、new和super的具体过程
95、继承
Person类 属性: name 方法say
Student类 属性: grade 方法 goschool
实现new student 调用方法分别输出name 和 grade
96、localStorage、sessionStorage、Cookie不同点
97、列举http header
98、原生js实现模态对话框
99、手写一个双向绑定
100、双栈排序
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
101、手写promise函数
102、从输入一个url到浏览器页面展示都经历了哪些过程? Dns查询、三次握手、http请求
103、new生成一个对象的过程: 核心就是return this啊
104、请简单说明什么是事件冒泡和事件捕获以及事件委托 这个答案太直白了,不多提了 然后就是来点css了
105、请实现一个两边宽度固定中间自适应的三列布局。 不多提:圣杯布局、双飞燕
106、flex布局有没有了解?
107、请简单叙述一下原型链s 从prototype、隐式的_proto_、constructor再到修改原型链的内容会导致的影响。这一块还是比较熟的
108、ES6了解吗?请简单说一下promise机制 异步的承诺机制、顺势说了一下解决回调地狱的问题
109、手写一下深拷贝: 这个告诉各位看官一个简单粗暴的加分方法 JSON.parse(JSON.stringify(obj)) 用JSON实现深拷贝
110、==与===的区别 typeof null的结果是什么
111、如何改变this的指向, 当然是call、aplly、bind,紧接着问了一个这之间的区别
112、说一下如何实现闭包
113、同步与异步的执行顺序
114、get与post的请求的区别
115、什么情况算是跨域?如何解决跨域问题?
116、一个有序的数组进行查找操作?(手写) 别说了,二分查找开始吧
117、手写一个快速排序 你看归并排序行吗?好吧不行.之后就开始了数据结构、算法、
118、设计一个花瓣展开的加载效果
119、说一下常见的响应头
120、jQuery的功能,作用
121、var、let、const的区别
122、inline-block的元素用flex怎么水平居中
123、Vue的生命周期
124、说一下class,什么声明可以使用class
125、CORS是什么,怎么实现的,在响应头还是请求头设置,设置什么?
126、transition和animation的区别
127、说一下五层协议结构是哪五层
128、TCP、UDP、IP、HTTP在哪一层
129、如果catch返回了一个数据,后面的then还会执行吗?
130、设置left有什么前提要求
131、flex实现一个两栏布局
132、Person.bind(this)返回什么
133、状态码301、302、403、500,504
132、说一下Promise,有哪些状态,状态有什么特点
133、实现水平居中(margin:0 auto没答上)
134、讲一下缓存,cache-control是什么,静态文件的web缓存机制
135、AJAX产生背景,优势,原理
136、缓存 后端缓存、前端缓存机制、http协议缓存机制
137、实现on 和trigger
138、三列布局 flex如何三列布局
139、事件循环(经典promise和setTimeout)
140、双等三等区别,px, em, rem,let const var
141、首屏优化
142、H5语义化标签的优点
143、强缓存和协商缓存
144、_proto_和prototype的区别(我说完还想延深说一下原型链,结果面试官说没事,不用说了,你答的可以了。。)
145、vue cli创建项目会有package.json文件,里面都有什么,如何配置。
146、SEO知道吗,我答了概念,感觉不是很好,我就扯到了之前写项目用vue cli不利于SEO的问题,然后说了使用Nuxt解决。还说了iframe也不利于SEO争取一点是一点。。
147、如果现在向一个div里面插入1000个div如何实现,我说了append1000个,他反问你了解过一种技术叫..(忘了。没见过,a开头的一个单词好像)
148、vuex给vue带来的优点和它的一些缺点
149、重绘重排,重绘在什么时候发生(当时答完又说了如何避免重排尽量重绘)
150、跨域的解决方案,主要问了jsonp(但是我用的是反向代理比较多)
我说了jsonp的原理,然后问我主要用了script标签的哪个属性,扑街(没怎么用过是硬伤)
151、居中垂直,子div没有高度宽度
152、nodejs用了什么(答搭服务器)有没有跨域问题怎么解决
153、双向绑定的原理,要答仔细(我吃亏在说了大概,用了什么方法,用了什么设计模式)
154、闭包原理,闭包的坏处
155、vue中设置key值的作用
156、打包优化,被问到vue怎么做异步加载(我说的是用.webpack的chunk语法加上vue的import()函数,不知道蒙对了没有)??
157、 http使用keep-alive后,如何将响应报文与请求报文一一对应(不能通过cookie来判断)
158、如何模拟一个map,
159、map及weakmap的区别,及weakmap的使用场景
160、原声js修改页面与vue修改页面的性能比较,还要分析原因,以及原声js优化到极致后与vue的性能比较
161、解析渲染dom过程
162、前端性能优化
163、less的css预处理是如何做到的
164、rem和css3媒体查询的使用方式,如果有的设备分辨率高但是屏幕小如何处理
165、vue的父子组件传值,兄弟组件呢
166、js的继承(原型链继承和寄生组合继承代码说一下)
167、js的原型链和原型
168、css和js优化的方式
169、es6的promise的优点和缺点,用es5如何实现promise的all方法
170、es6的proxy说一下
171、逻辑题,共26个硬币,其中有一个是假硬币,假硬币较真硬币略轻。问用一个天平最少称几次可以找出假硬币。
172、给定一个长为n数组,里面存储着n个无序的正整数,求出数组中两个相差绝对值最小数的索引,,,说思路
173、代码实现轮播图
vue:watch与computed、路由切换动画、插槽、template作用、nextTick()原理
算法:实现货币转换单向input(带权有向图最短路径)、类似背包问题(动态规划)
ui组件测试、持续集成、单元测试
js的数组和对象的遍历性能比较
高阶组件介绍及原理
代码多种方法实现扁平化数组
node进程管理、cli原理
174、- 安全方面 csrf,xss localStorage与cookie谁更安全
- Even loop
- 宏任务,微任务
- 布局
- vue双向绑定,设计模式
- 闭包
- vue-router的实现,hashchange不支持的情况下如何修改
- 工作中遇到的问题
- 因为过了几天,记得不太清楚了
- http https http2.0
- 缓存
面试官基本是掰着手指头在选那些点(安全,http,css,布局,优化,项目点,还有工作遇到不会的点怎么解决等)
175、Symbol的作用,怎样遍历Symbol
176、border-radius的用法
177、css3动画实现方式
178、多个transition叠加会发生什么,animate的用法
179、local storage存储结构化
180、css3新增的特性
181、两道代码题2.add(4).reduce(2) //4
“123”.sub(2) //‘123123’
(写完后面试官提醒了在原型链上加方法之前要判断,第二个用join()实现性能更好)
182、移动端自适应的方式
183、 那有没有遇到过中东地区字体居右的问题啊?怎么解决的?(我感觉面试官肯定也做过类似的项目 头一次就项目聊到一块去了 贼开心) 那还有没有遇到过中东地区字体的一些坑?(我说的是时间显示的上面 有问题)
184、说一说let const底层怎么实现的?(不会。。。)
185、webpack热更新有没有了解过他底层是怎么实现的?(不会)
186、flex在部分ios9 ios10 上面有兼容问题
187、display,float,position这三者的优先级
188、diff算法的原理,时间复杂度
189、如何理解http是无状态的,为什么要这样设计,他的优缺点,http是二进制还是文本紧致
190、css选择器的优先级
191、解释闭包(顺便引申到了静态作用域,动态作用域)
192、box-sizing属性
193、动画的两个属性区别和适用场景
194、事件机制 冒泡有什么用 除了事件委托呢?
195、http1.0和2.0的区别
196、301和302状态码的区别是什么 分别用于什么情况下
为什么有了301还要有302 ?我说可能需要临时跳转一下,不是永久的;他说还可以用来做站点统计,如 果301的话,浏览器下次就直接去那个新的地址了。304是干啥的 强缓存和协商缓存 细说
197、提问环节:
部门是做什么的?
招聘流程是啥样的? 现场面还有两面,然后面试结束10分钟后直接跟我敲定了现场面时间
198、手写垂直居中的多种实现方法
199、原生实现Ajax
200、说一下httpXMLRequest的5个state是啥? 其实没答完,脑子一片空白。小姐姐人很好,帮我补充完整了,化解了尴尬。
201、说了到MVVM和虚拟DOM
202、手写两个数组合并后排序 要求尽可能时间复杂度低
203、问了一些html 非常基础的东西,比如说 html的结构, doctype是啥, HTML5的写法,为啥是那样写的
204、CSS引用方式和加载顺序
205、EventLoop 宏任务 微任务
206、块级作用域是什么有哪些?
207、斐波拉契数列
208、有没有看英文文档什么的?我说我都是遇到了问题才去看,他让我举个例子,然后我说了V8团队在 EventLoop上对async做了一些改进,原来是什么样的,现在是什么样的。给他说了个实例,就是那种 async里面的await后面跟了一个async里面console.log(1)的。他问我为什么会去看这个,我说我看事件 流的时候,两个电脑的浏览器版本不一样,跑出来的结果不同,然后我去百度搜了没搜到,但是在 stack overflow看到了一个类似的问题,顺着人家的答案找到了V8团队的官方说明。然后跟面试官具体 介绍了一下这个改进。不过我自己也没太理解,所以感觉讲的也不太好。
209、onready事件和onload事件
210、scrpit标签位置对加载的影响
211、CSS的display属性有哪些
212、编程题就是判断回文字符串
213、原型链,原型链的顶层,原型链顶层的顶层
214、设置display:none后DOM tree和render tree都会出现该节点嘛?
215、背景色会覆盖border吗
216、实现背景线性渐变的圆
217、触发bfc条件,bfc好处
218、判断一棵二叉树是否是镜像二叉树、
219、Generator/await用过吗
220、在白板上写出水平垂直居中的方法,一般三种就差不多了
221、字符串的方法,反转一个字符串以及优化
222、vue与jQuery的对比
223、mvvm和mvp模式的简单描述,很简单的描述了下,3分钟左右
224、vue的响应式原理:数据劫持 观察者模式,以及vue的组件化理解
225、缓存中有last-modified规则了,为什么还要有etag。面试官告诉我是这样一种情况:当一个文件被加了一个空格,l-m
就被修改了,然后再把那个空格删掉,此时文件还是原来那个文件,但l-m就不一样了,所以这就是etag的作用。
226、jQuery里使用$.attr('class')方法,那么原生对应的是什么obj.classList。面试官告诉我的
227、原生ajax的使用步骤,面试官当时的意思应该是讲讲过程就好
228、setter和getter
229、vue组件什么情况下可以独立出来?为什么?(实际上是想带入代码复用和高内聚、低耦合的概念)
230、浏览器从服务端获取到数据后,进行渲染的过程是怎样的?js的渲染是处于哪一步?
231、token令牌对web安全有怎样的作用?
因为没有自己具体敲代码使用过token,只是在公司项目中遇到过,了解的比较浅,所以只回答了可以防范crsf(跨站请求伪造)攻击。
232、对原型链的理解是什么?并且分析下面例题:
1 2 3 4 5 6 7 8 |
function Person(){
} Person.prototype.name = 'xmi'; Person.age = 21; var a = new Person(); console.log(a.age); //请推测打印结果 答:由于age属于构造函数的私有属性,是不能通过new一个新对象去继承的,所以这里应该打印undefined。 |
1、
- css3动画优化,盒模型。bfc
- webpack优化
- canvas和svg的区别
- 设计模式
- http请求头,http状态码,缓存
- 原型链,继承
- 跨域问题(jsonp的实现,多个jsonp如何实现,cors跨域,请求头是什么)
- http和https的区别,https建立的过程
- 项目问题,剪切板
- 性能优化问题
- 笛卡尔坐标系问题,两个矩形如何确定他们有没有相交,讲一下基本实现
- promise实现
- es6的新属性
- 安全性问题,xss,csrf两个如何处理
2、合并两个数组
3、面向对象理解
4、斐波那契数列?怎么优化?
5、从数组中找出三数之和为n
6、对微服务有什么了解?
7、函数式编程理解
8、内存泄漏
9、对设计有研究吗
10、红色适合搭配什么颜色,忌讳搭配什么颜色
11、实现一个css框架你有什么思路吗
12、四面(总监面)
13、
三面(现场面)
问面试官的问题:
14、看过算法导论吗
15、对图有了解吗
16、http建立连接过程,为什么不是四次或两次握手
17、天擎的权限管理是怎么做的?
18、
3种,rgb,rgba,hex
3个
透明度
很多种,基本数据类型用 typeof,判断对象有很多种
number, string, undefined, symbol, bigint, object, function
instanceof, Object.prototype.toString.call, 比较对象的 constructor 和你想要判断的类型构造器
Array.isArray
addEventListener(事件名,listener)
没咋用过,盲猜是绑定 listener 的 this 的,不是
捕获 -> 目标阶段 -> 冒泡阶段
stopPropagation, return false
不造, 我说应该和stopPropagation 一样有个 API 来取消捕获。
我没刷过算法题,但是这么简单的问题我还是知道的。递归深度优先遍历。
19、一筒羽毛球,每次可以拿一个或者2个,问总共 n 个羽毛球多少种拿发?
20、串和滚雪球
21、模块化规范(AMD、CMD、CommonJS)
22、web安全
(XSS、CSRF)
23、 假设一个用户打开你写的网页,发现白屏了,你会如何去定位原因
24、
如何将数组转换为字符串,如何将字符串转换为整数,parseInt的第二个参数代表什么
25、
说出event对象的3-5个属性或方法
26、