金山软件前端线上面试

  1. 简单说一下tcp为什么是三次握手、四次挥手
  2. 项目中的权限是如何实现的
  3. https握手过程,指纹是怎么得到的?http2和http1.1有啥区别吗?(指纹忘记了,http2只说了头部压缩和多路复用)
  4. BOM是什么?
  5. Http请求中的keep-alive有了解吗?简单描述一下
  6. 左边定宽,右边自适应方案
  7. 二分查找的时间复杂度
  8. 如何判断一个对象是否是数组对象?
  9. CORS原理是什么?
  10. linux常用的命令,怎么排查错误
  11. Iterator是什么,有什么作用?
  12. 微信扫一扫二维码网页上登陆前后端过程?
  13. 前端方面怎么做权限?
  14. 你觉得JS是单线程还是多线程的?除了HTML5新特性之外如何实现JS多线程。
  15. 有什么比较复杂的项目,有些什么样的亮点?,有什么难点?
  16. angular的脏检查(双向绑定)是如何实现的
  17. display,float,position的关系
  18. CSS3新增伪类有那些?
  19. wireshark能抓包到https请求的内容吗?
  20. 举一些ES6对Object类型做的常用升级优化?(重要)
  21. 如何实现bind?
  22. 谈谈移动端点击穿透?
  23. JavaScript如何处理同步和异步情况

编程题

  • 给定一个从1 到 n 排序的整数列表。
  • 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。
  • 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。
  • 我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。
  • 返回长度为 n 的列表中,最后剩下的数字。

示例:

输入:
n = 9,
1 2 3 4 5 6 7 8 9
2 4 6 8
2 6
6

输出:
6