京东金融前端现场面试

  1. 实现数组拍平
  2. 实现一个三列布局,左边固定大小,其他两列占据剩余空间的50%(使用flex或者使用float)
  3. cookie和session区别?
  4. es6 class 的new实例和es5的new实例有什么区别?
  5. 实现Storage,使得该对象为单例,并对localStorage进行封装设置值setItem(key,value)和getItem(key)
  6. 为什么直接修改复制的对象会改变原先对象的内容?原理是什么?(回答了引用类型变量共享内存结果说不对)
  7. 简单说一下tcp为什么是三次握手、四次挥手
  8. querySelectorAll得到的是Nodelist还是数组,这两个有什么区别?
  9. 输入网址到网页呈现出来这个过程尽可能描述一下
  10. 给列表中的li(里面是a标签)绑定点击事件,点击时弹出其在列表中的顺序(页面不跳转)
  11. 你觉得JS是单线程还是多线程的?除了HTML5新特性之外如何实现JS多线程。
  12. 对BFC规范(块级格式化上下文:block formatting context)的理解?
  13. 在一个字符串中找出连续重复的字符,这个字符可以是数字、字母和中文等。
  14. 你觉得你在这个团队,你的优势是什么呢,尤其是技术上?
  15. 说说你处理过的浏览器兼容性问题
  16. 口述new关键字
  17. 你觉得typescript和javascript有什么区别?
  18. 精确获取页面元素位置的方式有哪些
  19. 怎么给一个dom元素添加一个类?

编程题

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

示例:

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

输出:
6