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美团联想头条前端实习生面经的主要内容,如果未能解决你的问题,请参考以下文章