欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2018前端面试题1

程序员文章站 2022-06-09 17:23:41
...

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);

2018前端面试题1

15.写出一下代码的打印效果

    var a=2;
    (function Temp(){
        console.log(a);
        var a=1;
        console.log(a);
    })();
    console.log(a);

2018前端面试题1



16.定义一个方法,将以下数组进行去重并进行升序排序。

var a=[2,3,10,3,2,-1];

方法返回结果为[-1,2,3,10];

var arr = [2, 3, 10, 3, 2, -1];
arr.sort(function(a,b){
return a-b;
})
console.log(arr)
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))