文档目录
头条面经系列
- 写一个深度拷贝
- cdn原理
- 尾递归
- 状态码304 和 2005.null == undefined 为什么
- 不同数据类型的值的比较,是怎么转换的,有什么规则
- jit;jc我不知道是什么
- float的元素,display是什么
- 暂停死区
- bootstrap清除浮动的方法
- this的指向 哪几种
- 看一下github
- Redis 和 mysql
- AngularJS 双向绑定原理
- TCP连接,一个包丢了会怎么处理,拥塞控制
- HTTP缓存了解吗?如果服务端想更新一个强制缓存,有什么解决方案?
- websocket了解吗?
- 用vue有哪些有点?双向数据绑定原理
- 路由原理
- 算法题:写个二叉树,实现插入、前中后任意一种遍历
- 算法题:基本类型(非引用)数组去重
- 写个VUE的拖拽组件(vue的api徒手撸不出来,写了个原生的拖拽,不记得属性名用了伪代码,末了加了个节流)
- 好像有问到VUEX和VUE的双向绑定?(不记得一面有没有问后者了)
- 让介绍下promise,写了写promise的代码
- 介绍下promise还有什么api,说了下all,说了race这个api,但是名字一下子想不起来了
- 让实现一下all,当时忘了(不知道)可以用计数法,写了个setInterval的...
- 问线性表和链表的区别
- 写个链表反转,说了可以用递归和非递归,非递归版本写了半天,貌似写的还有bug,写完之后意犹未尽打算写递归版的,面试官说好了就这样吧
- JS类型判断
- typeof可以检测的类型:string,boolean,number,function,object,undefined es6的symbol
- curry的实现
- 线程与进程,空间分配、资源分配等等
- 三次握手、四次挥手及标志位、time-wait等等
- H5的新特性,语义化
- BOM与DOM,及BOM相关的一些属性
- 写代码:双向绑定、防抖和节流
- 设计模式:发布订阅、观察者
- 先聊了一通项目,问了我 decorator 的实现原理,扯了一大堆,感觉良好。
- 如何判断是不是完全二叉树(没答出来)
- 编程题:判断一个链表是否有环
- 一道考异步执行顺序的题,只要了解micro task 和 macro task 应该就可以答出来
- 编程题:写个函数反转字符串
- TCP 握手,分手,拥塞控制,流量控制
- https的原理
- DHCP 的实现基于啥协议(UDP)
- Vue 的双向绑定实现原理
- Vue 如何监听一个不会触发 render 的数据
- ES6的扩展: ?
- 基本类型的扩展,比如数值扩展,函数扩展啊,比如剪头函数等等,然后还有Proxy,Reflect,Promise,class,生成器函数,async/await等等,当然他就问Proxy对象能拦截什么,我说总共13个吧,但是我不一定写得全,然后随手就写了,get,set,deleteProperty, has, getPrototypeOf, defineProperty ,....
- 如果阻塞了JS中的主线程会发生什么情况?
- 使用发布订阅模式实现一个EventEmitter?
- PureComponent,flex布局以及一些css的东西,比如水平垂直居中等
- 讲讲ES6的箭头函数
- await和async 本质
- 类数组转化成数组的方法
- 代码题,异步执行的顺序,宏观任务任务理解,promise、setTimeout等,让你写出输出的顺序
- http缓存头部相关,Etag过程,cache-control的参数
- 代码题,思路是将一个嵌套的数组用深度遍历和广度遍历分别写出来
- http请求方法有哪些?
- 跨域问题遇过吗?什么办法可以解决?讲了一下cors,jsonp,websocket,postmessage,反向代理等
- 讲一下前端安全?xss,csrf,说一下他们具体是什么,如何预防?
- TCP连接和断开过程(三次招手,四次挥手)
- cookie localStorage sessionStorage有什么区别?
- https和http有什么区别?(TLS套接层协议)
- 如果登陆的请求是https,而其它的请求是http的会出现什么问题?(一开始答了跨域的问题,后来想了一下,答了cookie会加密,可能导致其它请求无法通过身份验证)
- 最后面试官问我接触过redux吗?我说没有我学的是vue,应该是react里面的状态管理工具,相当于vuex
- TCP 协商流程&断开流程
- 讲一下什么是 prototype
- 一个矩形,水平垂直居中,且宽高比为 2:1
- Vue 双向数据绑定实现(问的很细)
- node用过吗,electron了解吗
- 有没有使用过css3动画,介绍一下,怎么做,关键是怎么做的CSS
- 单行文本溢出,多行文本溢出把代码实现写出来
- bfc布局是什么
- js类型,封装一个类型鉴定函数
- 闭包,平时在哪用到? 立即执行函数解决闭包中访问变量的问题
- 事件轮训机制
- 原生js实现bind函数
- 一个函数,然后让你说他们的值是多少,为什么,预编译,严格模式,作用域链
- 浏览器渲染原理
- 说说你做了什么项目,用了什么技术栈?
- 为什么要使用Redux,是不是所有项目都必须要使用Redux?
- 你觉得mongoose有什么作用?
- 如何判断一个IP是不是国内IP?
- 如何判断一个对象是不是空对象?
- 0.1+0.2 == 0.3?原因?
- 在线编程,getUrlParams(url,key); 就是很简单的获取url的某个参数的问题,但要考虑边界情况,多个返回值等等
- POST一般可以发送什么类型的文件
- 说一说你了解的express中间件
- git使用过吗?用过哪些指令?git具体工作流是什么?
- 算法:链表反序输出,不再申请内存空间
- Number()的存储空间是多大,如果后台发送了一个超过最大字节的数字怎们办
- 垂直居中实现方法
- 跨域、jsonp原理、CORS原理
- Proxy
- Promise原理
- 浏览器请求数据问题,请求数据到请求结束与服务器进行了几次交互
- TCP为什么要四次挥手
- cookie有哪些属性、大小、浏览器如何禁止别人访问cookie
- localStorage,sessionStorage的区别。
- display:none,visibility:hidden,opactiy:0的区别。
- BFC,如何形成BFC
- BFC与IFC的区别
- BFC会与float元素相互覆盖吗?为什么?举例说明
- 回流与重绘,如何避免回流
- git merge、git rebase的区别
- js脚本加载问题,async、defer问题
- antd源码相关,使用什么语言写的,按需加载实现
- 设计模式,有哪些设计模式
- 在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持
- websocket与ajax的区别
- fetch API与传统request的区别
- 懒加载的节流和防抖,代码实现,并说明原理去区别还有使用场景
- css垂直居中,不定宽高和定宽高的2种实现办法
- 写一个继承吧,组合继承,然后说出寄生组合继承相对于组合继承的优点
- ajax和后台对接传数据如何实现,中间需要注意什么细节,get还是post
- es6有学过吗?说一下你了解哪几个,我详细说了let var const的区别各种使用办法
- promise有用过吗?他是干啥的?你会在啥场景使用他,promise如何解决回凋地狱?如何和ajax配合?
- em和rem如何适配?有啥区别?还有其他适配的办法吗?
- 前端性能如何优化列举几种吧
- 你有canvas的经验,你可以大概说一下如何实现一个普通canvas的过程吗?可以写一下吗?
- Css 写一个正方形,大小是父级的一半
- 写函数任意标签转成json文件
- 抛硬币问题 先抛的人赢的概率
- ssr和前后端分离的区别
- h5兼容问题
- list的无限滚动---节流
- align-center中ios8的问题-webkit-align-item: center
- 算法:数组中map和reduce,如何用reduce实现map
- 算法:打平数组和规定深度的打平数组
- 浏览器的渲染机制,为什么使用Virtual DOM,直接操作DOM的弊端是什么?
- setTimeOut和promise区别
- 实现一定时间内事件只触发一次
- 实现队列函数(先进先出),以实现一次100秒后打印出1,200秒后打印2,300秒后打印3这样
- 实现类似于模板字符串的功能
- 常用的块级元素和行内元素有哪些
- 块级元素的特点
- img是什么类型的元素
- 说一下你了解的浮动
- 为什么要清除浮动?举个实际场景
- 说一下你了解的盒模型
- css3用过什么
- box-sizing的各个属性有什么区别
- float和position一起用是什么效果
- rem用过吗?做不同手机的适配怎么做?
- 写个二分查找
- 箭头函数特点?
- vue的双向绑定和依赖收集
- vuex是做什么的?缺点?
- cookie和session区别?
- 讲一下登录验证全过程(涉及session)
- webpack3升级到4为什么会提升速度?
- webpack优化有哪些?
- 多文件上传
- 项目里动态建表性能有点低(操作dom次数太多),有什么优化方案?(设置display:none的class,最后统一去除,减少重排)还有别的办法么?(innerhtml)
- 扑克牌,一张放桌上一张放牌底,直到手中牌全部发完。给出桌上牌的顺序,求最开始时候手中牌的顺序(用了递归,被说性能不好)
- html转vdom结构
- 用css实现一个模态窗口,要从窗口下面向上弹的动画
- 问一些css的单位比如rem,em,问css的布局方式,就是只用盒子模型布局,position的布局,flex布局,grid布局等等
- tcp在哪一层?让你实现一个基于tcp协议之上的协议,你怎么实现。(其实就是实现一个http协议,问的相当细了,近20分钟都在讨论这道题)
- webpack打包产物是怎样的,到底是为了什么,优化了什么,为什么要合并文件?
- vue的diff是为什么,浏览器重绘重排前会diff吗,为什么?
- 实现一个单行容器内:左边一行文字,右边一个btn,文字边长过程中,不会把btn挤下去,而是文字超出省略
- vue@3.0中的preset配置?
- 父组件A和其子组件B/子组件C,B/C进行通信的方式
- 组件中eventbus的实现
- 组件如何设置并被使用
- 如何来创建多个项目?
- 多个组件$message如何实现最后触发的在最上面
- 如何实现在图片被加载之前的占位符一个image,宽高比16:9
- H5中边框为1px的设置
- .div 和div > div > div的优先级
- 给定一个字符串如下,请统计字符串中出现最多的字母和次数
- 给页面注入50万个li怎么做提升性能?
- fileReader用过吗?base64编码原理?
- setTimeout一定会按时执行吗?
- http有哪些方法?option是做什么的?
- 你一般用的MIME类型有哪些?
- 让我用css实现一个硬币旋转的效果
- 又让我用canvas写个在页面上可以拖拽的球。
- 问了我事件委托以及冒泡原理。
- 写个函数,可以转化下划线命名到驼峰命名,我用split写了下,然后面试官又让我用正则写了一下。
- 写一个函数可以实现深拷贝
- 让用defineProperty实现一个双向绑定,defineProperty的api记不清了,和面试官说明了下,其他的基本写出来了
- 缓存命中率的问题,怎样确保缓存全部数据,缓存命中率不是100%应该怎么办
- 说说性能优化的通用架构方案
- 请求优化和渲染优化的方法
- 数据类型转换的原理
- 编程,5个feach请求,请求完成后要求立即执行,但最终的输出顺序要按照要求输出ABCDE(思路是:将每个feach的回调通过a/a的方式输出,但最后没有run出来)
- 简单介绍一下 body-parser 的作用和原理(没答好)
- 基于 http 模块,写一个 http server,并且处理 POST 请求
- 跨域相关的问题
- 介绍CSRF。CSRF会不会有跨域的问题(不会,这里涉及到跨域的一些原理,跨域请求会被后端接口执行,但是返回的时候会被浏览器拦截)
- 希望 全栈还是专注做 Node.js
- 基于你学的信息安全专业你对现在的 web 安全有什么看法,有什么改进意见(没有看法。。。)
- 问了下进程间通信,我答了管道,信号量以及共享内存(应该还有消息队列,信号,套接字)
- 编码过程为什么使用虚拟地址而不是物理地址,这个直接说不会了。
- 给了图,问css实现,大概是五个li,宽高固定,竖直方向间距固定,要求水平方向间距由剩余宽度均分
- 能否用标准盒模型实现ie盒模型
- 比较了一下null==undefined,1==‘1’
- 实现 检查二叉树中是否存在一条路径,使路径上节点和等于给出值