金山软件前端线上面试
金山
JavaScript
- 简单说一下tcp为什么是三次握手、四次挥手
- 项目中的权限是如何实现的
- https握手过程,指纹是怎么得到的?http2和http1.1有啥区别吗?(指纹忘记了,http2只说了头部压缩和多路复用)
- BOM是什么?
- Http请求中的keep-alive有了解吗?简单描述一下
- 左边定宽,右边自适应方案
- 二分查找的时间复杂度
- 如何判断一个对象是否是数组对象?
- CORS原理是什么?
- linux常用的命令,怎么排查错误
- Iterator是什么,有什么作用?
- 微信扫一扫二维码网页上登陆前后端过程?
- 前端方面怎么做权限?
- 你觉得JS是单线程还是多线程的?除了HTML5新特性之外如何实现JS多线程。
- 有什么比较复杂的项目,有些什么样的亮点?,有什么难点?
- angular的脏检查(双向绑定)是如何实现的
- display,float,position的关系
- CSS3新增伪类有那些?
- wireshark能抓包到https请求的内容吗?
- 举一些ES6对Object类型做的常用升级优化?(重要)
- 如何实现bind?
- 谈谈移动端点击穿透?
- JavaScript如何处理同步和异步情况
编程题
- 给定一个从1 到 n 排序的整数列表。
- 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。
- 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。
- 我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。
- 返回长度为 n 的列表中,最后剩下的数字。
示例:
输入:
n = 9,
1 2 3 4 5 6 7 8 9
2 4 6 8
2 6
6
输出:
6