前端面试中,一定都会被问过项目中的难点,但是很多人都答不出来。为了让大家接下来的面试中有充足的准备,给大家整理了一些有难度又高频的面试题,希望你们求职顺利。
我们先来汇总JavaScript的笔试题:
(1)介绍一下JS的基本数据类型:
Undefined、Null、Boolean、Number、String
(2)介绍一下JS有哪些内置对象:
Object是JavaScript中所有对象的父对象数据封装类对象:Object、Array、Boolean、Number、String其他对象:Function、Argument、Math、Date、RegExp、Error
(3)列举JS的基本代码规范:
(1)不要在同一行声明多个变量(2)如果你不知道数组的长度,使用push(3)请使用===/!==来比较true/false或者数值(4)对字符串使用单引号(因为大多时候我们的字符串。特别html会出现")(5)使用对象字面量替代newArray这种形式(6)绝对不要在一个非函数块里声明一个函数,把那个函数赋给一个变量。浏览器允许你这么做,但是它们解析不同(7)不要使用全局函数(8)总是使用var来声明变量,如果不这么做将导致产生全局变量,我们要避免污染全局命名空间(9)Switch语句必须带有default分支(10)使用/***/进行多行注释,包括描述,指定类型以及参数值和返回值(11)函数不应该有时候有返回值,有时候没有返回值(12)语句结束一定要加分号(13)for循环必须使用大括号(14)if语句必须使用大括号(15)for-in循环中的变量应该使用var关键字明确限定作用域,从而避免作用域污染(16)避免单个字符名,让你的变量名有描述意义(17)当命名对象、函数和实例时使用驼峰命名规则(18)给对象原型分配方法,而不是用一个新的对象覆盖原型,覆盖原型会使继承出现问题(19)当给事件附加数据时,传入一个哈希而不是原始值,这可以让后面的贡献者加入更多数据到事件数据里,而不用找出并更新那个事件的事件处理器
(4)介绍一下JS原型,原型链,他们有何特点?
每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。关系:instance.constructor.prototype=instance.__proto__特点:JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本,当我们修改原型时,与之相关的对象也会继承这一改变。当我们需要一个属性时,JavaScript引擎会先看当前对象中是否有这个属性,如果没有的话,就会查找它的prototype对象是否有这个属性,如此递推下去,一致检索到Object内建对象。functionFunc(){}Func.prototype.name="Xiaosong";Func.prototype.getInfo=function(){returnthis.name;}varperson=newFunc();console.log(person.getInfo());//"Xiaosong"console.log(Func.prototype);//Func{name="Xiaosong",getInfo=function()}
流式布局如何实现,响应式布局如何实现?
流式布局:也叫fluid,
上面一行的空间不够容纳新的TextView时候才开辟下一行的空间。场景:主要用于关键词搜索或者热门标签等场景;他主要是按照页面元素的宽度按照屏幕分辨率进行适配调整,但整体布局不变,使用%百分比定义宽度,高度大都是用px来固定,可以根据可视区域和父元素的实时尺寸来调整,尽可能适应各种分辨率。
响应式布局:主要是实现不同屏幕分辨率的终端上浏览网页的不同展示方式,通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验;首先设置meta标签,通过媒体查询来设置样式MediaQueries,然后再设置多种视图宽度。
什么是“usestrict”,好处和坏处是什么?
ECMAscript5添加了第二种运行模式:"严格模式"(strictmode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。
好处:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。注:经过测试IE6,7,8,9均不支持严格模式。
缺点:现在网站的JS都会进行压缩,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被merge后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节。
介绍一下websocket
websocket是一种网络通信协议,是HTML5开始提供的一种在单个TCP连接上进行全双工通信的协议,这个对比着