2018前端面试题1
1.css盒子模型概念
答:padding,margin,border
2.html渲染过程
答:解析HTML--构建DOM树--DOM树与CSS样式进行附着构造呈现树--布局--绘制
当浏览器遇到一个 script 标记时,DOM 构建将暂停,直至脚本完成执行。
JavaScript 可以查询和修改 DOM 与 CSSOM。
CSSOM 构建时,JavaScript 执行将暂停,直至 CSSOM 就绪。
3.移动web开发和pc开发有何不同
答:
1.pc端没有触摸的各种事件,移动端有;移动端没有鼠标移入移出事件,但是pc端有
2.Pc端最常用的布局是固定宽度为980px(也有960px,1000px,1200px);而在移动端,因为有很多网页是可以横屏看也可以竖屏看,并且很多屏幕的饿分辨率都 是不一样的,所以只要牵涉到移动端都要考虑用响应式布局3.Pc布局考虑更多的是浏览器的兼容性,但是在移动端,考虑更多的是手机兼容性,因为手机的型号类型非常的多,导致屏幕的分辨率是不一样的
4.移动端触摸弹出的手机键盘处理也是在pc端不会遇到的问题。
5.移动端和pc端适用的js框架也是不一样
6.Pc端浏览器内核有很多,webkit,Gecko,。。。。,但是移动端的浏览器内核比较单一,基本都是webkit以及webkit相关的blink
7.Pc端的交互是鼠标,键盘的交互而移动端变成了触摸,手势的交互
4.什么叫优雅降级和渐进增强
答:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。
5.Node.js适用场景
答:NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景
6.对node的优缺点提出自己的看法
优点:高并发,I/O密集
缺点:1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;
解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;
2. 只支持单核CPU,不能充分利用CPU
3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
7.web应用从服务器主动推送Data到客户端有哪些方式?
1) html5 websocket
2) WebSocket 通过 Flash
3) XHR长时间连接
4) XHR Multipart Streaming
5) 不可见的Iframe
6) <script>标签的长时间连接(可跨域)
8.es6的set数据结构
答:元素无序且不可重复
9.用js实现数组去重方法
function select(arr) {
var arr2 =[] ;
for (var i = 0; i < arr.length; i++) {
if (arr2.indexOf(arr[i]) == -1) {
arr2.push(arr[i])
}
} return arr2;
}
console.log(select(arr))
10.js的call和apply的区别
答:
fun.call(thisobj,arg1,arg2) ;当后面参数个数确定时用call,参数之间用逗号连接
fun.apply(thisobj,[arg1,arg2]);当后面参数个数不确定时用apply,参数通过数组形式输入
11.web缓存方案
cookie,localstorage,session
12.http状态码,http协议了解哪些
13.解决跨域的方案
答:iframe,window.name,修改document.domain,jsonp,后台设置代理
14.写出下列代码的打印结果
function temp(a,b,c){
console.log(temp.length);
console.log(arguments.length);
}
temp(1,2);
15.写出一下代码的打印效果
var a=2;
(function Temp(){
console.log(a);
var a=1;
console.log(a);
})();
console.log(a);
16.定义一个方法,将以下数组进行去重并进行升序排序。
var a=[2,3,10,3,2,-1];
方法返回结果为[-1,2,3,10];