Fork me on GitHub

大厂前端面试题

一面题目

- VueRouter 的原理?(两种路由方式说了一下)

- 对于 History 路由而言,在服务端是如何做路由分发的呢?

- 介绍一下 Vuex 的 Mutation 和 Action 的区别吗?(mutation做同步操作,action一般用于异步)

- 为什么要设计出 Mutation 和 Action 这两个东西?(Action 作为业务逻辑的封装更合适,提供了更大的自由度)

- 计算机网络, 磁盘寻道算法?(FIFO,最短优先,电梯算法)

- 最短寻道时间优先的缺点是什么?(会造成远处的任务饥饿问题)

- 进程和线程的区别(顺便把Chrome为什么从单进程转成多进程架构说了一下)

- 知道哪些进程间通信(IPC)的方式? (主从式、会话式、消息-邮箱机制、管道、共享内存、Unix Domain Socket, Chromium IPC 的源码,内核里面把以前的 ChannelPosix 换成了 ChannelMojo,从而达到线程安全的目的,顺便解释了下线程安全)

- 能不能说说从输入 URL 到页面渲染经历了什么?(DNS 解析过程,HTML词法分析和语法分析,CSS解析, 合成图层、合成线程调用光栅化线程池,生成位图后浏览器进程间通信过程,显卡缓存与显示器的关系)

 

二面题目

- ES5写一个数组去重(O(n^2)时间)

- 能不能优化? (用新空间一个O(n)时间的)

- 能不能区别开数字和字符串?(indexOf方式)

- 讲一讲 HTTPS 加密(对称加密有AES + CHACHA20, 分组模式以前有 CBC、CTR,TLS1.3 中只剩下 GCM,非对称加密 RSA、ECDHE)

- 怎么握手的呢?(讲了三个版本:传统 RSA、TLS1.2、TLS1.3, 后面也讲了 TLS1.3 的 Session ID、Session Ticket 以及 PSK)

- HTTPS 如何保证数据是否被篡改?(说了下有签名的过程)

- 签名是什么原理(私钥加密,公钥解密,比对哈希摘要)

- 哪些哈希摘要算法(Sha256, Sha384)

- 介绍一下你的项目(说了下项目遇到的挑战,说了这几点: 1. 怎么解决闭包陷阱。2. 通过 EventLoop 解决 transform 失效的问题)

-  EventLoop 的理解(宏任务-微任务-UI渲染)

- 如果要在UI渲染之前做一些事情你会怎么办?(启动微任务执行吧)

- requestAnimationFrame 在 EventLoop 中是一个什么位置?(实际上rAF会在UI渲染之前)

- 分离图层做动画有什么好处呢?(通过设置 CSS 的 will-change 可以转换为一个图层,调用 GPU 加速)

- 分离图层会发生重绘吗?(会)那既然重绘,它的好处在哪里?(不会影响其他的图层)

- 说说 computed 属性为什么能够在依赖改变的时候,自己发生变化?( computed 和 watch 公用一个 Watcher 类,在 computed 的情况下有一个 dep 收集依赖,从而达到更新computed属性的效果,computed Watcher如何跟渲染Watcher关联,以及 Vue 在二次收集依赖时用 cleanupDeps 卸载一些无用的 dep)

-  webpack 了解?(webpack 的一些优化手段,打包时间方面,预编译、缓存、缩小构建目标,说了大概十个插件,然后打包体积上,JS 和 CSS 的Tree-Shaking 怎么配置)

-  CommonJS 为什么不能做 Tree-Shaking ?

- ESModule 既然是编译时加载,那它可以做到运行时加载吗?(webpack 有动态 import 的方式)

- 写过 loader 和 plugin 吗?两者有什么差异吗?(先loader后plugin)

 


文章就分享到这,欢迎关注“前端大神之路

posted @ 2021-01-06 10:50  广东靓仔-啊锋  阅读(326)  评论(0编辑  收藏  举报