• 2017做的某某测试答案,仅供参考


    一、基础知识

    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、目前自己在工作中的瓶颈是什么?

    进步比较慢,平时基本对接于业务,其它很少接触,现在也希望接触多点,多学习。
  • 相关阅读:
    HPA
    docker 入门
    idea手动保存文本
    mac下安装配置sql plus
    oracle序列
    oracle存储过程
    Java正则表达式
    expect命令
    关于OneDrive/GoogleDrive推送的定价方案征询
    存储设备故障已修复,及对用户的补偿措施
  • 原文地址:https://www.cnblogs.com/junhey/p/8955300.html
Copyright © 2020-2023  润新知