2017年末~2018美团联想头条前端实习生面经

Posted suedarsam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017年末~2018美团联想头条前端实习生面经相关的知识,希望对你有一定的参考价值。

写一哈最近面试的东西

因为有的间隔比较久 可能有漏失的地方 凑合看看咯~

以下面试经验皆为电话面试

联想 2017.10

1、简单介绍一下你自己
2、css的盒子模型

标准 w3c 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分。
ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 padding。

3、说一下水平垂直居中的方法

https://github.com/CodingMeUp/some_notes/issues/13
http://blog.csdn.net/freshlover/article/details/11579669

水平垂直居中在《css揭秘》里略有涉猎

4、 继承

https://www.cnblogs.com/humin/p/4556820.html

上面这个大佬写得就是《js高级程序设计》里的

5、实现一个ajax
function Ajax(method, address, flag, callBacks, data) 
    var xhr = null;
    if (window.XMLHttpRequest) 
        xhr = new XMLHttpRequest();
     else 
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
    
    if (method == 'get') 
        xhr.open('get', address, flag);
        xhr.send();
     else if (method == 'post') 
        xhr.open('post', address, flag);
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
        xhr.send(data);
    
    xhr.onreadystatechange = function() 
        if (xhr.readyState == 4) 
            if (xhr.status == 200) 
                callBacks(xhr.responseText);
             else 
                alert('出错了,Err:' + xhr.status);
            
        
    

6、状态码

常见的http状态码

成功状态码:

200 服务器成功返回内容

301/2 临时/永久重定向

304 资源未被修改过

失败状态码:

404 请求内容不存在

500 服务器暂时不可用

503 服务器内部错误

http://www.runoob.com/http/http-status-codes.html

7、跨域

https://github.com/CodingMeUp/some_notes/issues/9

8、闭包

函数对象可以通过作用域链相互关联起来,函数体内部变量都可以保存在函数作用域内,这种特性称为闭包

以上内容来自于《js权威指南》

9、算法:数组去重

https://segmentfault.com/q/1010000000197274

网上东西有点老,总之面试官说还有es6的set

[...new Set(obj)]

总的来说问的都是简历上的东西,而且问的挺全的,所以同学们,写在简历上的东西一定要能摆或。

2017.12 头条

哎 头条啊 ,多么痛的领悟,视频面试手写代码。

1、

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * 
            padding: 0px;
            margin: 0px;
        
        
        #container 
            width: 100vw;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
        
        
        .attr 
            width: 100%;
            height: 0;
            padding-bottom: 50%;
            margin-left: 10px;
            margin-right: 10px;
            background-color: #2973ec;
            text-align: center;
            position: relative;
        
        
        .a 
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            font-size: 20px;
            color: #fff;
        
    </style>
</head>

<body>
    <div id='container'>
        <div class='attr'>
            <span class="a">
                A
            </span>
        </div>
    </div>
</body>

</html>

2、
不是

Array.prototype.slice.call()

3、

        if ([] == false) 
            console.log(1);
        
        if ( == false) 
            console.log(2);
        
        if ([]) 
            console.log(3);
        
        if ([1] == [1]) 
            console.log(4);
        

结果为1,3

http://blog.csdn.net/suedar1/article/details/78685806

具体可以看看我写的博客
解释一下后两个吧,第三个是因为只要当括号内不是false,null和undefined时就会执行if之后的代码
第四个是因为对象会指向不同的内存单元。


4、

async function async1() 
    console.log('async1 start');
    await async2();
    console.log('async1 end');

async function async2() 
    console.log('async2');

console.log('script start');
setTimeout(function() 
    console.log('setTimeout');
, 0);
async1();
new Promise(function(resolve) 
    console.log('promise1');
    resolve();
).then(function() 
    console.log('promise2');
)
console.log('script end');

具体看一下这篇文章

https://juejin.im/post/59e85eebf265da430d571f89

5、闭包问题:

const obj = 
    name: " jsCoder",
    skill: ["es6", "react", "angular"],
    say: function a() 
        for (var i = 0, len = this.skill.length; i < len; i++) 
            (function(i, that) 
                setTimeout(function() 
                    console.log('No.' + i + that.name);
                    console.log(that.skill[i]);
                    console.log('----------------');
                , 0)
                console.log(i);
            )(i, this)
        
    
;
obj.say();

6、继承问题

Function.prototype.bind = function(...arr) 
    function instance(color) 
        this.name = arr[1];
        this.color = color;
    
    instance.prototype = Animal.prototype;
    return instance;

7、

https://www.cnblogs.com/fsjohnhuang/p/4147810.html

8、

function findGroup(arr,n,sum)
    if(sum == 0 && n == 0)
        return true;
    else if(n <= 0)
        return false;
    
    if(n > 0)
        for(var i = 0; i < arr.length; i++)
            var temp = arr.slice(i+1,arr.length);
            return findGroup(temp,n-1,sum-arr[i]) ||findGroup(temp,n,sum);
        

时间复杂度O(logn)?这点存疑

https://www.2cto.com/kf/201709/677886.html

头条面试完只想一首《凉凉》送给自己

2018 01美团厦门面试

美团面试的特点就是喜欢问得越来越深入

1、简单介绍下你自己
2、了解过h5的数据存储吗

http://www.w3school.com.cn/html5/html_5_webstorage.asp

我把h5的session忘了,只答了cookie的实现

var cookie = 
    setCookie: function(key, val, date) 
        var oDate = new Date();
        oDate.getDate(oDate.getDate() + date);
        document.cookie = key + '=' + val + ';expires = ' + oDate;
        return this;
    ,
    removeCookie: function(key) 
        this.setCookie(key, "", -1);
        return this;
    ,
    getCookie: function(key, callback) 
        var str = document.cookie;
        var arr = str.split('; ');
        arr.forEach(function(item) 
            var itemArr = item.split('=');
            if (itemArr[0] == key) 
                callback ? callback(itemArr[1]) : "";
            
        )
        return this;
    

3、数组排序
快排原理,什么时候用快排

http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

注意快排的算法复杂度是O(nlgn),一开始的速度并没有O(n)快,所以只在数据量特别大的时候运用

4、状态码
上面有

5、跨域的方式 实现一个cors的跨域
上面有

6、闭包
Q:function里面return一个this return的是什么
A:全局的window

7、js有什么数据类型
Object, Undefined,Null,Boolean,Number ,String 和 Symbol。


没啦没啦,总的来说面试还是很有意思的,对知识点进行查漏补缺嘛:),然后希望大家电话面试不要喝水。。。然后,加油吧~

以上是关于2017年末~2018美团联想头条前端实习生面经的主要内容,如果未能解决你的问题,请参考以下文章

2017年末~2018美团联想头条前端实习生面经

每日面经美团点评前端开发Java工程师最新面经速递!

每日面经美团 | Java工程师(实习)最新面经4篇!

前端 2018 届校招笔试面经百度,阿里,腾讯,阿里文娱,携程,美团,拼多多

面经数据开发一面-美团暑期实习

美团java后台实习面经