一、基础知识
1、项目中使用过哪些优化方法
请求资源优化,比如数据和请求文件压缩,CDN加速
数据加载优化,比如合并请求,减小http请求消耗
页面加载优化,比如数据加载之后应用性能分析,避免或最小化JavaScript和CSS的使用阻塞渲染
2、写代码使用正则表达式验证邮箱格式 。
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
3、如何判断某变量是否为数组数据类型。
Array.isArray(value)
或者
Object.prototype.toString.call(value)==='[object Array]'
4、简述常见的http状态码,列举5种。
200 OK请求成功
304 Not Modified文档内容没有修改
403 Forbidden服务器请求拒绝
404 Not Found请求失败
502 Bad Gateway请求服务器无响应
5、简述一下src与href的区别。
src是引入,指向物件的来源地址
href是引用,指向需要连结的地方
6、挑出其中块级元素
a、b、span、dl、dt、img、input、strong、h1-h6、blockquote、select、label、em、button、textarea
dl h1-h6 blockquote
7、请编写一段JavaScript脚本生成下面这段DOM结构。要求:使用标准的DOM方法或属性。
<div id=”name”>
<p class=”slogan”>真传X</p>
</div>
```javascript
var _div=document.createElement('div');
var _p=document.createElement('p');
_div.appendChild(_p);
_p.className="slogan";
var _text=document.createTextNode('真传X');
_p.appendChild(_text);
_div.setAttribute('id','name');
document.body.appendChild(_div);
```
8、为什么会有跨域?解决方式?
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,是由浏览器同源策略限制的一类请求场景,通过跨域的解决方式有很多,其中常用的是通过jsonp跨域、跨域资源共享(CORS)和nginx代理跨域,其它还有nodejs中间件代理跨域,WebSocket协议跨域,postMessage跨域,iframe跨域。
9、CSS中margin和padding的区别
margin是外边距
padding是内填充
详细点:margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离;padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离。
二、 基础算法
1、写代码消除 数组 【6 8 9 9 12 13 14 1 3】中重复的元素。
```javascript
var _array=[6,8,9,9,12,13,14,1,3];
var _temp=[];
var _obj={};
for(var i=0;i<_array.length;i++){
if(!_obj[_array[i]]){
_temp.push(_array[i]);
_obj[_array[i]]=true;
}
}
console.log(_temp);
//或者
var _array=[6,8,9,9,12,13,14,1,3];
console.log(new Set(_array));
```
2、二分查找的时间复杂度是多少,请写出推导过程。
时间复杂度log2(n),二分算法的思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数,由于你n/2^k取整后>=1,即令n/2^k=1,可得k=log2n,(是以2为底,n的对数)所以时间复杂度可以表示O(logn)
3、如果要构建一个树形结构(dom树),那么基本节点应该如何定义,写出伪码即可。
构建dom树可以参考虚拟dom的构建,比如react中的html结构的写法。```React.createElement('h1', {className: 'title'}, 'Hello world')```
三、基础设计模式
1、平时工作中用到哪些设计模式?
单例模式,适配器模式,代理模式,观察者模式
2、简述mvc mvvm 设计模式?
这个可以由我的一篇博文来叙述:https://juejin.im/entry/598ddfe7f265da3e301e9512
四、工作思考
1、工作中使用过哪些框架(angular/vue/react)?简述其中一个框架的特点
vue,特点是轻量,双向绑定,基于虚拟dom的MVVM,写法类传统开发模式
2、目前自己在工作中的瓶颈是什么?
进步比较慢,平时基本对接于业务,其它很少接触,现在也希望接触多点,多学习。