前端面试题(校招)

2,899 阅读5分钟
  • 1: 从url输入到页面显示会有哪些步骤?
(1) DNS服务器解析域名,找到对应服务器的IP地址;
(2)和服务器建立TCP三次握手连接;
(3)发送HTTP请求,服务器会根据HTTP请求到数据服务器取出相应的资源,并返回给浏览器;
(4)浏览器处理响应 
    加载:浏览器对一个html页面的加载顺序是从上而下的。当加载到外部css文件、图片等资源,浏览器会再发起一次http请求,来获取外部资源。
当加载到js文件,html文档会挂起渲染(加载解析渲染同步)的线程,等待js文件加载、解析完毕才可以恢复html文档的渲染线程。
       
  解析:解析DOM树和CSSDOM树。
  渲染:构建渲染树,将DOM树进行可视化表示,将页面呈现给用户。
  • 2: TCP UDP HTTP的区别
  • 3: 实现一下函数柯理化
  • 4: https的连接细节
  • 5: vue的路由vue的双向绑定如何实现,原理是啥
  • 6: 深浅拷贝,各自原理,深拷贝有啥缺点
  • 7: 节流和防抖你是如何实现的,他们两个根本的区别在哪里,代码上如何体现
  • 8: MySQL索引和事务、写SQL
  • 9: 状态码:4开头、3开头、2开头
  • 10: 浏览器缓存、强制缓存、协商缓存
  • 11: content-type:From-data、json等 及其之间的区别
  • 12: 描述跨域请求、解决方案:CORS,Nginx反向代理
  • 13: 本地存储缓存的方法:cookie、sessionStorage、localStorage 及其区别,是否可以跨域获取缓存
  • 14: node和npm的区别,node指令读文件
  • 15: 原型、原型链的区别
  • 16: Promise()
  • 17: 节流和防抖你是如何实现的,他们两个根本的区别在哪里
  • 18: vue和react的数据流
  • 19: redux的原理 APPdispatch store...
  • 20: 移动端原生代码屏幕适配
  • 21: 代码:链表反转、数组反转
  • 22: module.export exports export的区别
  • 23: 代码:判断空对象为空的方法,大约是写出隐式转换的底层代码
  • 24: 跨域相关的问题
  • 25: webpack都用过哪些loader和plugin,说的vue-loader,又问vue-loader经过转换成了什么格式
  • 26:TCP 握手,分手,拥塞控制,流量控制
  • 27:有哪些缓存策略
  • 28:简单介绍进程与线程
  • 29:介绍基本的数据结构及其应用,队列,栈,堆。函数的执行栈和堆内存
  • 30:编程题:实现一个简单的 EventEmitter(on监听,emit触发发送事件)
  • 31:简单介绍一下 body-parser 的作用和原理
  • 32:各类排序算法介绍,冒泡,快排,堆排,以及相应的算法复杂度
  • 33:怎么实现函数内部可以访问函数外部,但是函数外部不能访问函数内部?(闭包底层如何实现。闭包原理:作用域链相关)
  • 34:实现树的前序遍历,和反向链表
  • 35:图片懒加载,怎么实现?代码怎么写?
  • 36:如何避免回流和重绘?
  • 37:https的混合加密原理,为什么要使用非对称加密和对称加密两种加密方式?
[加密的两种方式](https://www.cnblogs.com/xiohao/p/9054355.html)

所谓非对称加密技术是指加密的密钥e和解密的密钥d是不同的(e!=d),
并且加密的密钥e是公开的,叫做公钥,而解密的密钥d是保密的,叫私钥。
        
非对称加解密的过程如下:加密一方找到接收方的公钥e(如何找到呢?大部分的公钥查找工作实际上都是通过数字证书来实现的),
然后用公钥e对明文p进行加密后得到密文c,并将得到的密文发送给接收方,接收方收到密文后,用自己保留的私钥d进行解密,得到明文p,
需要注意的是:用公钥加密的密文,只有拥有私钥的一方才能解密,这样就可以解决加密的各方可以统一使用一个公钥即可。
  • 38:百度搜索框一样的时候,当你输入内容的时候,下面显示相应的搜索结果
  • 39:基于 http 模块,写一个 http server,并且处理 POST 请求这里 (req 实际上是个 stream,获取 body 的方法是基于注册 on data 事件实现的)
  • 40:介绍自己的项目,介绍了最近做的小程序还有聊天室,问小程序的开发有什么不一样,问了小程序怎么提升开发效率
  • 41:三次握手 为什么是3次,挥手为什么是4次
  • 42:闭包 使用场景 举例,有什么缺点,为什么外面访问不到闭包的变量
  • 43:typeof instance的区别
  • 44:解释原型链
  • 45:浏览器是如何展示一个页面的,后面牵扯到了页面的解析过程,然后问react的话,有什么不同(没get到他想问的点,跳过)
  • 46:性能优化,其中提到了减少重排和重绘,http2,问如何减少重排重绘,http2的多路复用如何实现的,还详细解释了强制缓存,协商缓存
  • 47:redux,问它的中间件,action,实现原理
  • 48:虚拟dom,如何diff,为什么要使用虚拟dom,和直接操作dom相比有什么好处,跨层级移动dom会怎么样
  • 49:如何使一个页面重定向
  • 50:解释服务端渲染,有什么优势
  • 51:做了一个promise async setTimeout打印结果的题
  • 52:你有什么想问的,然后问了技术栈和他们考察候选人会比较看重哪些
  • 53:一个解析字符串的题,写完后,又将题目改了下,重新给出解法,其中用到了正则,问正则有哪几种模式
  • 54:事件冒泡,事件捕获,怎么允许事件捕获,事件委托怎么实现,好处
  • 55:手撕闭包的防抖,节流函数,并能解释其原理
  • 56:两边固定宽度,中间自适应,说下有哪些解决方案,然后让手写了一下flex和grid方案,问了flex-direction有哪些值