java程序员最难面试之“今日头条”

序言

今日头条的面试不是一般的难.

前面两面还好。

一面

JS基本数据类型

说说ES6新规范,我说了 let const 箭头函数 还有promise, ES6 Module 。

怎么实现ES6 Module,我说了用闭包实现一个模块。

项目用到React,说说React。

React性能优化

算法 问题之前笔试 ,求两个整型数组的相同数,当时想到了用哈希表去扫描,然后比较下一个数组中是否有相同数字

常见的查找方式,顺序表查找,二分查找,哈希查找,各自时间复杂度。 注意二叉树的查找,时间复杂度是O(h),树的高度!

AVL是O(lgN)

哈希表的实现方式: 哈希函数实现-除留余数法、直接定址法、数字分析法等。 解决冲突的方法:开放地址法(线性探测、平方探测、)、分离链接法、双散列、再散列等

算法二 : 头条很喜欢问这个:

一个无序,不重复的数组,从中取出N个数,求让这个N个数和为M的组合有多少个?

二面

简单的介绍了一下项目

1. 问我的项目,为什么使用背景滚动,如果是多个精灵对象来滚动怎么处理?(还是一样)

2. 还是问的另一个项目的一些细节(对自己的项目一定要熟悉)

3. 说说从输入URL,发生了什么,以HTTPS的角度讲,细讲了一下SSL握手。 数字签名 数字证书的作用。为什么我们需要HTTPS,为什么它是安全的?

4. 函数节流怎么设计,拖动事件,不需要频繁触发,而且隔一段时间触发一次。 函数节流的实现。

5. 设计一个认证的方案,免登陆的方案。 一开始提出cookie+session,一直问我怎么产生这些信息,我说在服务端产生,信息存到数据库中,通过HTTP 响应SET-Cookie返回一个cookie,设置了它的过期时间expire等,然后传输回客户端,客户端之后每次请求都会带上这个cookie。后面安全性,我说MD5,他说不可逆不行。

后面面试官跟我说 用token, 我们不需要实际把用户的信息存在cookie里面,我们把用户名等信息可以使用非对称加密算法,加密后得到一个随机字符串,这个就是token然后存在客户端,你每次发送到服务端可以通过解密token来获取这个信息。

6.React 的virtual DOM的dom diff算法细节。

三面

两道逻辑推理题

document.write怎么影响文档的

比较它在onload中执行和在文档创建时不同时机的区别

3.设计一个弹幕,怎么优化。 需要考虑RenderLayer,我跟他说了一下canvas

写KMP算法出来

请留言告诉我你会多少题?

在这里给大家提供一个java交流学习的地方,java进阶群:744642380,

1)具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加我。

2)在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加我。

3)如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加我。

4)想交流学习java的可以加我。

你可能感兴趣的:(java程序员最难面试之“今日头条”)