web前端面试题
以下问 为面试官,答 为应聘者,四年前端开发小哥哥总结,如果觉得有点用,请点一颗星星!!!
么么哒 ,
会继续更新,
希望帮助到大家!!!!
有不对请指教哈!!!!
问:请阐述下跨域是什么,处理的方式常见的有几种?
答:跨域是JS为了安全考虑,不同域不能访问对方内部(伪造跨站请求)CSRF,主域名,子域名,端口,协议,127.0.0.1与localhost
都属于不同的域; 常见处理方式有 代理,JSONP, XHR2(满分回答);
问:你能给我阐述下递归是什么,使用递归要注意些什么吗?
答:递归就是函数自己调用自己(语气要自信),使用递归时候需要return停止掉,不然会死循环(满分回答);
问:你知道闭包是什么吗?
答:JS中有全局变量 && 局部变量,函数内部可以访问全局变量,函数外部不能访问到内部函数的局部变量,为了能够访问到内部函数的局部变量,我们需要两个函数嵌套使用,这就是闭包;
问:请你阐述下filter,foreach,map的区别?
答:1、foreach是遍历数组中每一项元素,没有返回值,可以不用知道数组长度,操作后改变原数组;
2、map遍历数组中每个元素,回调操作,需要返回值,原数组不改变,返回值组成一个新的数组;
3、filter过滤通过条件的元素,组成一个新的数组,原数组不变;
⭕ 扩展some,every
● some遍历数组中是否存在符合条件的元素,返回boolean;
● every遍历数组中元素是否全部符合条件 ,返回boolean;
(以上回答满分)
问:请讲下JS的基本数据类型?
答:常用基本类型:Number String Null Undefined Boolean;引用基本类型: Object、array、function、data等;
⭕扩展 (null 与undefined)
●null === undefined ? flase;
●null == undefined ? true;
(以上满分回答)
问:描述new 操作符的执行过程?
答:1.创建一个空对象,
2.将这个空对象的_proto_指向构造函数的 prototype,
3.将构造函数的this指向这个对象,
4.执行构造函数中的代码;
问:什么是原型和原型链?
答:原型模式是JS实现继承的一种方式。所有的函数都有一个prototype属性,通过new生成一个对象时,prototype会被实例化为对象的属性。所有的引用类型都有一个__proto__指向其构造函数的prototype。原型链的话,指的就是当访问一个引用类型时,如果本身没有这个属性或方法,就会通过__proto__属性在父级的原型中找,一级一级往上,直到最顶层为止。
解析:原型链最顶层Object的prototype的__proto__指向为null。
问:请问在那些情况下,需要处理异常,你常用的方法有那些?
答:程序执行都是异步的,比如一个函数需要使用另一个函数的返回值的情况下(有可能是闭包),需要程序依次执行,异步转为同步;
常用的方法:● async,await ● then ● Promise
问:请问你常用的对数组排序的方式有哪些?
答:● sort(正序) ● reverse(倒序)
⭕ 扩展(冒泡排序);
冒泡排序实际就是通过多层循环比较,返回一个数组;
问:请问你在编程中认为最难的是什么,为什么呢?
答:算法,算法,算法(没有为什么,因为面试官觉得最难的也是算法),至于为什么,自己编;