Skip to main content

Answer 面官系列

随机全部
顺序全部
随机置顶
随机 🍀
顺序 🍀
5道(19
随机 ⚡️
重置
1

XX 同学是吧,本次是跟你做一个初步的沟通,了解一下你的基本情况

1、首先请你简单的做一个自我介绍

。。。

2、好的,那讲讲你做过的项目吧

。。。

3、你在项目中有遇到过什么困难吗

。。。

3-1、怎么解决的

。。。

4、诶,XX,你是为什么想做前端呢

。。。

5、那你平时都是怎么学习前端的

。。。

6、了解,你现在人在深圳是吗?

。。。

6-1、是家在这边吗还是

。。。

6-2、租房住,你是一个人住吗

。。。

6-3、我们是在科苑地铁站这边,你离的远吗

。。。

7、好的,那问些技术问题吧,说说你对盒子模型的理解

盒子模型可以看作是一个容器,包含自身的内容、内边距、边框和外边距;默认为标准模型,当设为 border-box IE 模型时,边框和内边距不会将盒子撑大。

7-1、那 JS 中我们一般如何获取盒子模型的宽高呢

样式设置的宽高可通过 dom.style.widthwindow.getComputedStyle(dom).width 来获取,其中 dom.style.width 只能获取行内样式的宽高;另外,元素的实际宽高可通过 dom.offsetWidthdom.getBoundingClientRect().width 来获取;还有一个 dom.clientWidth 用于获取元素实际宽高减去边框后的值;

8、下一个问题,基本类型和引用类型有什么区别呢

  • 基本类型的值不可变,而引用类型的值可变;
  • 基本类型保存在栈中,而引用类型指针保存在栈中,内容保存在堆中;
  • 基本类型的比较是判断是否相等,而引用类型的比较是判断是否指向同一对象;
  • 基本类型的复制是复制它的值,而引用类型的复制是改变引用的指针,仍指向同一对象。

9、了解,那请问深拷贝和浅拷贝有什么区别呢

浅拷贝是增加一个指针指向原有的地址,与原对象会相互影响,可通过 Object.assign()、扩展运算符等方式实现浅拷贝;而深拷贝是增加一个指针指向申请的新地址,与原对象互不影响,可通过封装一个递归函数或使用 lodash 的 _.cloneDeep 方法来实现深拷贝。

10、我们在声明值时,用到的 let 和 const 有什么区别

let 是声明变量,而 const 是声明常量;

10-1、那 const 声明的引用类型可以修改吗(为什么

const 保证的是变量指向的内存地址不变。基本类型的值保存在内存地址中,因此 const 声明基本类型等同于声明常量。而引用类型变量指向的内存地址是个指针,const 只保证这个指针不变,而无法保证指针指向的内容不变,因此 const 声明的引用类型可以修改。

11、好的(没事)下一个问题吧,你可以讲讲同步和异步的区别吗

同步任务强调顺序性,而且会阻塞代码执行,只有前面的执行完,后面的才会继续执行;而异步任务不会阻塞代码的执行。

11-1、你对事件循环的理解(Event Loop)

JS 的运行过程中,遇到同步任务时会直接执行,而遇到异步(宏/微)任务时,会先放入(宏/微)任务队列,等同步任务执行完再执行任务队列的异步任务,主线程不断重复这个过程,就是 Event Loop 事件循环。

11-2、对宏任务和微任务的理解

异步任务也包括宏任务和微任务,在 JS 的运行过程中,遇到宏任务和微任务都会先放入任务队列,等同步任务执行完,微任务会先被调入主线程中执行,然后才是宏任务。常见的宏任务包括 setTimeout、setInterval、I/O 操作等,而常见的微任务包括 Promise、MutationObserver 和 Node.js 的 process.nextTick 等等。

12、Vue 系列

12-1、我看你用过 Vue 是吧,那在 Vue 中我们渲染列表时常常会加一个 key 值,为什么要加这个 key 值呢

遍历节点时需要给每个节点设置一个 key 值作为唯一标识,使 diff 算法可以正确识别此节点,找到正确的位置插入新节点,从而高效的更新虚拟 DOM。

12-2、Vue 的 diff 算法是怎样的

Vue 的 diff 算法会对比新旧虚拟 DOM,其中通过双端对比,将两个指针一个从前面开始,一个从后面开始,过滤出中间改变的部分,然后使用最长递增子序列算法,保证节点的移动次数最少。

12-3、下一个问题,你能讲讲 Vue2 和 Vue 3 的区别吗

Vue3 使用 Proxy 来重构响应式,解决了 defineProperty 无法监听响应对象新增属性的问题;而且新增了 Composition API,可以更灵活的组织逻辑;另外,Vue3 还在 Diff 算法、静态提升和事件监听缓存等方面进行了优化,大幅度提升了性能。

12-4、Vue3 在性能方面进行了什么优化

Vue 3 对 diff 算法进行了优化,新增了静态标记,只对比带有标记的节点,减少比较次数以提升性能;Vue 3 还对不参与更新的元素做静态提升,只创建一次,在渲染时直接复用,避免节点的重复创建;另外,Vue3 还做了事件监听缓存优化,将事件缓存起来复用,以提升性能。

13、React 系列

13-1、我看你用过 React 是吧,那在 React 中我们渲染列表时常常会加一个 key 值,为什么要加这个 key 值呢

遍历节点时需要给每个节点设置一个 key 值作为唯一标识,使 diff 算法可以正确识别此节点,找到正确的位置插入新节点,从而高效的更新虚拟 DOM。

13-2、那 React 的 diff 算法是怎样的

diff 算法就是用来高效地对比新旧虚拟 DOM,找出真实 DOM 的变化之处。React 的 diff 算法使用三大策略来降低 diff 算法的复杂度,首先只对同一层级的节点进行比较;其次,如果比较的组件是同一类型,则继续往下进行 diff 运算,如果不是同一类型,则直接删除被比较的组件及其子节点并重新创建;最后,同层级的一组子节点,还会通过 key 值进行区分。除了三大策略优化 diff 算法外,React 还引入了 Fiber 架构,比 Vue 的 diff 算法多了时间切片的能力。

13-3、如何理解 React 的受控组件和非受控组件

受控组件的值由 React 进行管理,通过传入的 value 来固定组件的值,并通过 onChange 事件来进行值的更新;而非受控组件不传入 value,一般只传入 defaultValue 作为初始的默认值,即使 defaultValue 的值固定,组件的值也不受影响。

13-4、什么情况下需要使用 Redux

共享公共数据

14、XX,你会用 git 吧,那讲讲你常用的 git 命令有哪些

  • git init 初始化;
  • git clone 克隆;
  • git add 添加到暂存区;
  • git commit 提交;
  • git pull 拉取代码;
  • git push 推送;
  • git status 查看工作区;
  • git branch 查看分支;
  • git branch 加分支名创建分支;
  • git checkout 加分支名切换分支;
  • git merge 合并分支。

14-1、git rebase 是干嘛的,有什么风险

rebase 变基操作是将提交到某一分支上的修改应用到另一分支,但 rebase 会修改提交 ID,导致历史记录的变更,因此,如果自己的提交已经被推送,就不建议使用 rebase 进行变基操作。

15、下一个问题,我们在浏览器输入一个 url 时会发生什么

首先解析域名;然后三次握手建立 TCP 连接;接着浏览器向服务器发送 HTTP 请求,拿到响应结果后处理页面;最后四次挥手断开 TCP 连接。

15-1、怎么理解三次握手

TCP 三次握手指的是建立连接时,需要在客户端和服务端之间发送 3 个包,以确认双方的发送能力和接收能力正常。如果是两次握手,客户端可以确认自己的发送能力和接收能力正常,但服务端只能确认自己的接收能力正常,而无法确认发送能力是否正常。

16、HTTP 状态码了解吗(讲讲你所知道的状态码)

  • 200:是请求成功;
  • 301:是永久重定向;
  • 302:是临时重定向;
  • 304:是请求的资源未发生变化,可以直接使用本地缓存;
  • 400:是请求报文语法错误;
  • 401:是请求需要通过 HTTP 认证;
  • 403:是请求资源被服务器禁止访问;
  • 404:是请求资源不存在;
  • 500:是服务器执行请求时发生了错误;
  • 503:是服务器正在忙。

17、GET 和 POST 的区别

  • GET 的请求参数放在 url 中,而 POST 的请求参数放在请求体中,更为安全;
  • GET 传输的参数有长度限制,而 POST 没有;
  • GET 请求会被浏览器主动缓存,而 POST 不会。

18、好的,那我这边就先问到这哈,你这边有什么问题要问的吗

  • 项目:我们是做文心大模型的预设插件,会涉及到一些算力的计算和模型的训练,前端的话技术栈是 React 18 和 Vue3 同时在用
  • 转正:我们现在招的是日常实习,不过表现优秀也是有机会转正的
  • 多久答复:因为有其他同学在流程中,所以我们会先综合去对比,所以具体多久答复也要看情况

19、那我们本次沟通就先到这,后面有结果我们会通知,你有什么问题也可以直接微信问我,感谢你的时间(拜拜

。。。