2020最新java头条校招实习面经解析(建议收藏系列),
2020最新java头条校招实习面经解析(建议收藏系列),
第一次大公司面试的面经
此次面试说来也有点匆忙,本没想过自己会那么快就想去面试大公司,并且把自己第一次面大
公司的各种不足展现得一览无余。
当时6月20号左右身边一位朋友给了一位人超nice的师兄的内推,并且鼓励我去投简历。
最终战胜了自己的胆怯,投了一份简历给内推的师兄。
一两天后hr就打电话安排面试了。
没想到面试是要连续着面的,当时面花了一个多小时过了一面,再花一个小时面二面,最终也
止于二面。
接下来就是本文的主题了。
我把当时面试官在线面试平台中写给我做的题记录了下来,其实从面试前就打算把
面试学到的东西积累下来。
我也尽量把每一道题都写上我的解题思路,希望能得到大家更多更好的意见。
一面
一、请问运行这段代码会输出什么.
let obj = {
name: 'bytedance',
getName() {
return this.name
}
}
let fb = obj.getName;
fb();
A:我当时好像是答undefined。但我知道这不会是输出”bytedance“
因为当obj.getName赋给fb的时候它的this也改变了,然后我后来我在浏览器中运行了一下代
码发现是输出""。。。
二、设计一个简单的任务队列,要求分别在1,3,4秒后打印出”1“,”2“,”3“.
new Quene()
.task(1000, () => {
console.log(1)
})
.task(2000, () => {
console.log(2)
})
.task(1000, () => {
console.log(3)
})
.start()
function Quene() { ... }
A:讲真,看到这道题的时候我第一时间感到自己完了
虽然也只写了一点,没有全部做出来,然后就跳过这道题了
面试完就努力着把这道题写出来.
function Quene() {
this.task = (time, callback) => {
setTimeout(callback, time);
// console.log(this)
return this;
};
this.start = () => {
return this;
};
}
虽然这样即使最后面不用写.start()也能打印出来,希望能得到指点Q_Q.
三、给定一个升序整数数组[0,1,2,4,5,7,13,15,16],找出其中连续出现的数字区间如下:
["0->2",”4->5“,"7","13","15->16"]
A:
function Arr(arr) {
var len = arr.length,
j,
newArr = [],
str = '';
for (var i = 0; i < len; i++) {
j = i;
if (arr[i] + 1 === arr[j + 1]) {
while (arr[j] + 1 === arr[j + 1]) {
str = '->' + arr[j + 1];
j++;
}
str = arr[i] + str;
newArr.push(str)
i = j
} else {
newArr.push(arr[i].toString())
}
}
return newArr;
}
还算比较简单的算法题吧,还好当时做出来了,不然可能就止步于此。
也希望大家能谈点自己对这道题的解法.
四、TCP协议建立连接的过程、进程间通信的方式有哪些.
TCP建立连接的过程即为三次握手,三次握手网上也有很多资料,这里就不细讲。
至于进程间的通信方式,当时没能打出来(这就涉及到我的知识盲区了【哭丧脸】)
后来网上查了一下,有:
这里有个题外话,如果面试官问浏览器窗口间的通信,那么有以下几种:
1.localStore
localStorage.setItem("name", name);
2.cookie + setInterval
在页面A设置一个使用 setInterval 定时器不断刷新,检查 cookie 的值是否发生变化,如果变
化就进行刷新的操作。
由于 cookie 是在同域可读的,所以在页面 B 改变 cookie 的值,页面 A 是可以拿到的。
五、用纯CSS创建一个三角形的原理是什么?如何实现?
A:用CSS创建一个三角形的原理是分别设置上下左右的border属性,中间内容为0面积。
实现:
#box {
width: 0;
height: 0;
border-left: 50px transparent solid;
border-right: 50px transparent solid;
border-top: 50px transparent solid;
border-bottom: 50px black solid;
}
六、0.1 + 0.2 > 0.3 返回什么?
A:true。分别转成2进制。
七、类数组对象是什么?
刚开始还对这个类数组感到懵逼,后来面试官一提醒函数的参数马上领悟到就是伪数组。
A:只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象。
function内部的arguments对象就是一个类数组对象
DOM方法document.getElementsByTagName()...也是返回一个类数组对象
八、什么是同源策略,为什么会有这种策略
源包括三个部分:协议、域名、端口(HTTP协议的默认端口是80)。
如果其中有任何一个部分不同,则源不同。即为跨域。
限制一个源加载的文档或脚本与来自另一个源的资源进行交互。
这是一个用于隔离潜在恶意文件的关键的安全机制。(来自MDN的解释)
九、什么CORS
A:受同源策略的限制,支持跨域;一种新的通信协议标准。
可以理解成同时支持同源和跨域的Ajax。
MDN解释:跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行
在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。
当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发送
一个跨域 HTTP 请求。
十、什么是OPTIONS请求
A:OPTIONS请求是HTTP请求的一种方法,返回服务器针对特定资源所支持的HTTP请求方
法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性.
然后一面就这样结束了,面试官也直接跟我说我通过了一面,我也问了一些问题后就结束面试了。
我赶紧把平台上的面试记录记下来,过了几分钟,当我还沉浸在通过一面的愉悦和全身心已放
松了的情况下.
发现手机有几个未接电话然后又再打进了一个,接通电话后对方是头条hr小姐姐,问我说现在
可以二面了,二面的面试官已经在平台上等着了。。。好吧,这太突然了,我马上赶赴战场.
二面
一、fetch
A:Fetch API 提供了一个获取资源的接口(包括跨域请求)。无论请求成功与否,它都返回一个 Promise 对象;
二、用Promise实现延迟3秒后输出 delay(3000).then(f,e)
A:
function delay(timer) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve();
}, timer)
})
}
三、XSS/CSRF
XSS:跨站脚本(Cross-site scripting)
通过提交或其他方式例如发布评论,其中含有HTML或JavaScript的代码,如果服务器没有过
滤掉这些脚本,这些脚本在一些情况下就可能会运行。
CSRF:跨站请求伪造(Cross-site request forgery)
是一种劫持受信任用户向服务器发送非预期请求的攻击方式,即在用户登陆某个平台化拿到用
户的登陆凭证后发送伪造请求.
四、图片懒加载原理 (lazy image)
A:给每张图片添加一个data-xxx的属性用于存放图片的src,检测到图片进入视野中的时候把data-xxx的属性赋给src
如何检测图片进入视野:
a.document.documentElement.
clientHeight获取屏幕可视窗口高度b.
element.offsetTop获取元素相对于文档顶部的距离c.
document.documentElement.
scrollTop获取滚动被卷去的高度如果b-c<a成立则元素进入可视区域
这里我还提到一个函数节流提高性能:
var canRun = true;
document.getElementById("throttle").onscroll = function(){
if(!canRun){
// 判断是否已空闲,如果在执行中,则直接return
return;
}
canRun = false;
setTimeout(function(){
// 这里加载图片
console.log("函数节流");
canRun = true;
}, 500);
};
五、上传图片
表单上传
(1). 提供form表单,method必须是post。
(2). form表单的enctype必须是multipart/form-data。
ajax上传
ajax和FormData可实现页面无刷新的文件上传效果
六、将一些ES6的新特性
不过当时到了后面真是精疲力竭,连let和const都没有说出来。。。
七、jsbridge
问到这个概念的时候我不清楚,头条刚好给我推过这样一篇文章,然而当时没去看。。
JSBridge 简单来讲,主要是 给 JavaScript 提供调用 Native 功能的接口,让混合开发中的
“前端部分”可以方便地使用地址位置、摄像头甚至支付等Native 功能。
是 Native 和非 Native 之间的桥梁,它的核心是构建 Native 和非Native 间消息通信的通
道,而且是双向通信的通道。
二面其中也包含一些IQ题,还有后面问我如果实习能实习多久我说3个月。
之后第二天就收到把我简历”丢进“公司人才库的邮件了。
当然这只是其中一部分题目,一些面试官口头问的我当时面试完真是超级累也忘了记录下来。
总之,感觉头条还是会比较重视算法和新技术。
收集了各方面的,当前公司的,还有自己收集总结的,下面的图片截取的有pdf,有如果有需要的自取.
各大公司面试题集合:
简历模板:
链接: https://pan.baidu.com/s/1DO6XGkbmak7KIt6Y7JQqyw
提取码:fgj6
不知道会不会失效,如果失效点击(778490892)或者扫描下面二维码,进群获取,链接补发不过来,谢谢。
相关文章
- 暂无相关文章
用户点评