总结一下最近几次面试遇到的一些问题,与大家一起学习。
一般面试官会让你做自我介绍,你可以捡自己拿手的项目说。
1、浏览器渲染原理,还有输入IP到页面展示的过程,期间有被问到过(TCP/IP三次握手都做了什么,http1.0,http1.1,http2.0的区别)
2、重排与重绘分别是什么,什么情况下会发生重排,什么情况下发生重绘,由此写css有哪些可以优化的点
3、写一个吸顶的效果,具体实现的方法有哪些种
4、元素的垂直居中的方法,具体实现,有哪些种方法
5、positon的属性,fixed的兼容,具体没个属性的意义
6、关于字符串的操作,字符串的截取
6、字符串去重,因为一般是把字符串转变成数组处理的,这里姑且说是数组去重的方法,(一般的套路是,一种是原生实现,一种是array自带属性实现)一种是es6或者最新的版本实现 (array和object是大头基本都会问) 排序同上也问的多
7、array.map和array.forEach的区别 这类也比较多
8、array.splice
9、怎么去区别array 和 object ,还有比如如何检测一个变量是String类型 (比较typeof与instanceof这两个感觉问题还蛮多的)
11、object的创建方法
12、原型、作用域、闭包
prototype、constructor、__proto__的关系,
讲作用域的时候一般也会说到const、let的差异,之前有问到过一个这个问题觉得很有意思在此记下(const a=5,a.b='c'会报错吗,a=9呢,那如果是let呢)
13、js如何实现继承(其中用apply和call也可以实现继承)
14、是否用过es6的方法,一般你说有那么就会问你用了哪些,然后根据你用到的问你。这里列举几个常被问到的问题。
a、箭头函数和普通函数的区别(书写方式,对this的词法解析)
b、promise的三种状态。常用的方法。原理实现
c、yield(这个问的不是很多)
15、是否有用过前端框架,如果有用到一般也会延伸出来问,套路是 生命周期,数据是如何更新的,这种更新是同步还是异步,基本原理是什么?如果有用过两种框架一般会要求比较两种框架的差异
16、前后端分离的项目构建,是如何搭建,如何发布,如何提高本地构建的效率,如何配置方便本地的调试。做过哪些优化
17、如何解决跨域问题。(分两个方面来回答,本地开发和环境发布分别是如何解决跨域问题)一般如果回答还可以会继续问出现浏览器跨域的原因是什么
18、如果有做过hybrid app 一般会问 如何实现跟native的交互,有哪些方案。webviewJavascriptBridge的原理。(有被问到IOS 和Android分别是用什么方法拦截的)
19、前端优化的方案