天天看点

前端三年到五年面试题分享

笔试:

都是些基础选择题,考察计算机网络,事件循环机制,闭包,this 这些。

一面:

三次握手和四次挥手详细介绍

TCP 有哪些手段保证可靠交付

URL 从输入到页面渲染全流程

如何预防中间人攻击

DNS 解析会出错吗,为什么

ES6 的 Set 内部实现

如何应对流量劫持

算法:top-K 问题,分成 top-1,top-2,top-K 三小问

二面:

跨域

webpack 的 plugins 和 loaders 的实现原理

vue 和 react 谈谈区别和选型考虑

webpack 如何优化编译速度

事件循环机制,node 和浏览器的事件循环机制区别

三面:

单元测试编写有哪些原则

一个大型项目如何分配前端开发的工作

怼项目

同样都是基础题,注意有两道算法:柯里化通用实现和 two-sum 问题。

typescript 有什么好处

vue 项目中如何约束 rxjs 数据的类型

rxjs 高阶数据流定义,常用高阶数据流操作符

二三面:

围绕着我的简历问项目细节,侧重于 rxjs 和 typescript 这块内容。

JWT 优缺点

选择器优先级

基本数据类型

RxJS 冷热流区别

RxJS 调试方法

nginx 负载均衡配置

前端性能优化手段

针对 React 的性能优化手段

301 302 307 308 401 403

vue 的 nextTick 实现原理以及应用场景

vue 组件间通信

谈谈 XSS 防御,以及 Content-Security-Policy 细节

场景题:一个气球从右上角移动到中间,然后抖动,如何实现

场景题:一个关于外边距合并的高度计算

mobx-react 如何驱动 react 组件重渲染

forceUpdate 经历了哪些生命周期,子组件呢?

React key 场景题:列表使用 index 做 key,删除其中一个后,如何表现?

算法:实现 setter(obj, ‘a.b.c’ ,val)

RxJS 相对于其他状态管理方案的优势?

手写冒泡排序

JWT 细节,适用场景

方案题:不同前端技术栈的项目,如何实现一套通用组件方案?

ES6 特性

闭包和 this 一起谈谈

postcss 配置

Promise 内部实现原理

vuex, mobx, redux 各自的特点和区别

react 生命周期

各方面谈谈性能优化

serviceworker 如何保证离线缓存资源更新

virtual dom 有哪些好处

然后换了个有黑板的面试间,狂怼项目,各方面都问到了。

总监面,把刚才一黑板的项目架构图全部擦掉,再来谈一遍。

Vue3 proxy 解决了哪些问题?

Vue 响应式原理

发布订阅模式和观察者模式的异同

图片懒加载实现

css 垂直居中

CI/CD 流程

谈谈性能优化

key 的作用

hooks

vue 和 react 区别,选型考虑

canvas 优化绘制性能

webpack 性能优化手段

事件循环

如何解决同步调用代码耗时太高的问题

手写 Promise 实现

场景题:如何实现登录功能

聊项目

Promise 实现原理

性能优化

vuex 数据流动过程

谈谈 css 预处理器机制

算法:Promise 串行

CI/CD 整体流程

SSR 对性能优化的提升在哪里

react 和 vue 更新机制的区别

Vue3 proxy 的优劣

symbol 应用

深拷贝

dns 解析流程

vue 和 react 选型和比较

ssr 优缺点

贝塞尔曲线

Vue3 proxy 优缺点

Vue 组件间通信

ssr 性能优化,node 中间层细节处理

这一面比较特别,和之前的面试都不太一样,是知乎早已关注很久的之昊老师面的。

之前的面试大概是属于主导权在我这边,面试官倾听的比较多,搭配上少量提问。而这一面基本全程处于被之昊老师教育加吊打的状态,感觉之昊老师说的话比我还多了,针对问出的每个点会在我回答的基础上做更多的延伸说明,没有局限到具体的技术方案或者细节代码,更多的是谈到了一些方法论或者说作为一个优秀的开发者面对一些问题时比编码更高的思维层面上的处理方式。收获很大,聊到了很多之前工作中都没有考虑过的东西。这就是大佬的世界吗.jpg。

如何编写 loaders 和 plugins

webpack 热更新原理

vue 和 react 组件通信

谈谈 eleme 框架源码

谈谈项目

个人兴趣爱好

笔试题

第一题:将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组

第二题:

说明:实现一个方法,用于比较两个版本号(version1、version2) 如果version1 > version2,返回1;如果version1 < version2,返回-1,其他情况返回0 版本号规则x.y.z,xyz均为大于等于0的整数,至少有x位 示例: compareVersion(‘0.1’, ‘1.1.1’); // 返回-1 compareVersion(‘13.37’, '1.2 '); // 返回1 compareVersion(‘1.1’, ‘1.1.0’); // 返回0

第三题:找到字符串中最大回文子串,例如 ‘3434356’ 的最长回文子串是 ‘34343’。回文是指对称的字符串,如:‘abccba’。找到字符串中最大回文子串

面试题

我做一个搜索,实时的去进行筛选数据,做一个简单的防抖,然后如何保证我的请求回来的结果是我最后一次的查询条件的结果

一百个异步请求,如何捕捉请求失败的有哪些,如何获取最后一个请求结果?