嗯,最近决定要及时更新我的面试过程!!!争取拿offer!!冲!!
下面是没有按顺序的记录,想到了问啥就记啥。
- 自我介绍;
- 为啥学前端;
- 学前端的途径是啥?? 通过啥学的前端;
- html5和css3 的新特新;
html5:
- 语义: header、nav、footer、section、article
- 表单控件:search、number
- web存储: localstorage、sessionStorage
css3
- 文字阴影: text-sahdow
- 边框: 圆角(box-radius)、阴影(box-shadow)
- 盒子模型: box-sizing
- 背景: 尺寸(background-size)、原点(background-origin)
- 过渡: transition
- 选择器: 属性、伪类、伪元素
- 2d、3d转换: transform、translate、rotate
- 你知道promise么?
- script的啥啥啥。(有些忘了,应该是指)
- 原型链;
- 事件循环机制;
- 宏任务 与 微任务 的顺序;
在任务队列里,微任务要比宏任务先执行
- 强缓存和协商缓存;接着问 知道哪个http的哪个头可以判断不?
- tcp的三次挥手;
- 输入url到渲染的过程;
- 页面渲染的过程;
- 跨域;
- 对前端的模块化是怎么看的;
模块概念:按照一定规范封装成几个文件块,每一个块向外暴露一些接口,块与块之间通过暴露的接口进行通信;
优点:代码封装,避免全局污染;具有唯一标识;使用方便快捷
- react 与 vue 的异同点;
共同点: 数据驱动视图; 组件化; 使用vdom;
不同点:
组件写法:react采用的是jsx,vue使用的是template单文件组件格式;
diff算法部分不同:
对比节点上:如果节点元素类型相同
对于vue来说,如果其classname不同,则会认为其依旧是不同的;
react,则只会修改其节点属性;
列表对比上:
vue采用的是首尾指针法,而react则是从左到右依次进行对比。
响应式原理不同:
react,强调数据不可变,需要setstate进行驱动更新,数据改变时,已组件为根目录,默认全部重新渲染。(此时有可能会问到 shouldComponentUpdate )
vue则依赖收集,递归监听data所有属性,直接修改; 当数据改变时,自动找到引用组件进行重新渲染;
数据流:
react,强调是单向数据流,而vue则是双向数据绑定;
核心思想:
react,是声明式渲染组件,是由后端组件发展而来;
vue,是尽可能的降低前端的开发模板,是一种渐进式双向绑定的mvvm框架;
- vue的双向绑定原理;
- diff算法;
- react的fiber了解么?
出现场景: 组件的渲染与更新
react16以前的vdom更新时采用但是stack架构,这又一个缺点:一旦开始就无法进行中断,如果vdom层级较深,就会阻塞渲染,从而造成卡顿。
fiber,将 vdom树 转换成 一个链表,然后遍历,链表在进行遍历操作时,是能够支持断点重启的;
基本原则: 更新分成俩个阶段: reconcilition(调和)、commit(提交)
reconciliation阶段: 找出要做的更新工作(找出 diff fiber tree),可以认为是一个计算阶段,计算结果可以被 缓存,也可以被打断;
commit阶段:提交所有更新并渲染,为了防止页面抖动,此阶段被设置为不能进行打断;
- react的hok高阶组件有用到么??
- webpack的loda和啥来着(忘了),就记得webpack没答出来;
接着就是手撕算法,1~n 的全排列
接着就是反问
公司目前用的技术栈;对我的一些建议。建议就是,js的基础薄弱,webpack可以去了解,vue和react的原理去了解,特别是数据绑定;哭晕,知道这个,给答成响应式原理了; 不过面试官挺好的,至少没有嫌我菜,哈哈,这次面试估计就是gg了,虽然面之前想着过不过无所谓,但是真的过不了,还是心理有些不舒服;; 特别是 双向数据绑定这,特别后悔,啊~~~~