以下都是此次面试问题的个人理解,仅供参考,欢迎指正,共勉。
- js中有哪些数据类型,它们在内存中得存在形式?
基本类型存储在栈空间里面:string/number/boolean/undefind/null
引用类型存在堆空间里面:object/array - 移动端点击时有延时吗?延时多长时间?是什么原因造成的?有什么改进方法?
移动端点击时有200~300ms的延时,是因为移动端会有一些默认行为,比如双击缩放、双击滚动等行为,尤其是双击缩放,是为桌面网站在移动端的浏览体验设计的,而在用户点击时,浏览器会优先判断用户是否要触发默认行为。
方案一:禁用缩放(会影响功能不建议)
方案二:更改默认的视口宽度<meta name="viewport" content="user-scalable=no"> <meta name="viewport" content="initial-scale=1,maximum-scale=1">
它没有完全禁用缩放,而只是禁用了浏览器默认的双击缩放行为,但用户仍然可以通过双指缩放操作来缩放页面。
方案三:使用FastClick等比较成熟的外部插件<meta name="viewport" content="width=device-width">
FastClick 是 FT Labs 专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。
FastClick的实现原理是在检测到touchend事件的时候,会通过DOM自定义事件立即出发模拟一个click事件,并把浏览器在300ms之后的click事件阻止掉。 - 移动端点击一下页面触发的事件顺序?
事件的执行顺序会受触摸的力度和长短,还有是否移动有关。
一般执行顺序为:
touchstart => touchmove => touchend => touchcancel(一般不会执行) => click - 作用域链有了解吗?
JavaScript的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是全局对象的属性,所以这些对象的关系可以看作是一条链,
链头就是变量所处的对象,链尾就是全局对象 - 闭包有了解吗?一般使用场景?
闭包是函数和声明该函数的词法环境的组合。
通常使用只有一个方法的对象的地方,都可以使用闭包。
详细解释起来太长,网上有很多种解释,都可以参考,这里是MDN对闭包的专业解释。 - 设计模式当中的单例模式了解吗?
单例模式也称为单子模式或单体模式,规则是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
《JavaScript高级程序设计》中也称之为对象字面量模式。
以下为代码示例://单例模式抽象,分离创建对象的函数和判断对象是否已经创建 var getSingle = function (fn) { var result; return function () { return result || ( result = fn.apply(this, arguments) ); } };
- 发起一个ajax请求的流程是怎样的。
1、创建XMLHttpRequestd对象实例
2、连接服务器
3、向服务器发送请求
4、接受服务器的返回 - 在浏览器中输入一段url地址会发生什么?
1、浏览器解析
2、查询缓存
3、DNS查询
4、建立链接
5、发送HTTP请求
6、服务器发送响应
7、客户端收到页面
8、解析HTML
9、构建渲染树
10、浏览器布局渲染 - http与https的区别?
1、http 的URL 以http:// 开头,https以https:// 开头。
2、http 标准端口是80 ,https是443。
3、https 协议需要到ca申请证书,http不需要。
4、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
5、http 的连接很简单,是无状态的,https协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。 - ES6中得箭头函数新特性是什么?
1、对 this 的关联
2、new 不可用
3、this 不可变
4、没有arguments对象
5、等等
其他
- 移动端有哪些性能方面的优化? 网络/资源/渲染/脚本 优化等
- dns是什么?百科 - DNS
- vue的生命周期都有哪些?
- git有使用过吗?git的版本管理了解吗?
- app用户输入账号密码,前后端的验证流程是怎样的?
- 为什么想换工作呢,离职的原因是什么?
大概就这些吧,中间还有其他问题,记不太清了。