1.三种主流框架框架差异
-
Angular
- 基于MVVM开发模式、Dependency Injection(依赖注入)、TypeScript、 模块化
-
React
- Virtual DOM、声明式设计、高效、灵活、JSX、 组件化、单向响应的数据流
-
VUE
- 基于MVVM开发模式、渐进式、数据驱动友好、组件化、轻量、简洁、快速、模块化友好
2.js语法深度问题
3.开发过程中问题怎么解决
-
做好注释,编写单元测试,尽量从源头避免
-
定位到问题,有没有遇到类似的
- 检查日志
-
git
-
Issue 处理情况、最后更新时间(无人维护的项目后续恐怕有问题都没法解决)
-
Star 数量,通过 Google 和 StackOverflow 看使用情况
-
-
总结问题
- 汇入文档
3.保持登录状态 登录状态保持 - 简书 (jianshu.com)
4.Ajax相关 Javascript Promise - 掘金 (juejin.cn)
5.vue相关:生命周期,keepalive等 React 生命周期 - 掘金 (juejin.cn)
6.给代码问输出顺序,好像是settimeout和promise相关,记不清了 JavaScript 事件循环 - 掘金 (juejin.cn)
7.闭包 JavaScript 闭包 - 掘金 (juejin.cn)
二面 1.自我介绍
2.项目相关,有什么难点,做过最复杂的是啥 qaq
3.RESTful - 好久没用完全记不清了自己坑自己?
4.js的堆栈,里面存了什么 - 栈里放引用
5.熟悉的数据结构说下
6.本科研究生最大收获是什么
7.你觉得自己性格优点是什么
8.二叉树说下,有什么遍历方式 - 前中后序
9.js内存管理 - 讲了下回收
-
react fiber,diff
-
vue 发布订阅
-
webpack 怎么写怎么配
-
源码
-
细节:版本
-
面试回答
-
知识体系
-
引导面试官
-
react 生命周期 - 在源码实现
-
性能优化
- url 输入为例子
-
组件接口设计
组件接口(API)设计指南[1]-要考虑的问题_基数科技的博客-CSDN博客
-
- 图片压缩
-
element ui 源码
- 修改源码并重新打包
-
部署
-
前端文件传给后端
-
html 音视频直播
-
静态编译
-
工作流
如何实现无限滚动_weixin_34405557的博客-CSDN博客
-
没有生命周期,没有内部的状态,render函数,输出dom,
-
项目亮点太少,深度,
-
基础还需要打磨
js 实现页面跳转
- window.location.assign(url)
- 会添加记录到浏览历史,点击后退可以返回之前页面
- window.location.href=url
require和import区别
-
模块加载的时间
- require:运行时加载
- import:编译时加载(效率更高)
- import命令会提升到整个模块的头部
test(); import { test} from '/test'; // 上面的代码不会报错,正常执行 -
模块的本质
- require:模块就是对象,输入时必须查找对象属性
- import
- ES6 模块不是对象,没法引用 ES6 模块本身
- 通过 export 命令显示指定输出的代码,再通过 import 命令输入
- ES6 模块是编译时加载,使得静态分析成为可能
- 引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能
// CommonJS模块 let { exists, readFile } = require('fs'); // 等同于 let fs = require('fs'); let exists = fs.exists; let readfile = fs.readfile;
上面CommonJs模块中,实质上整体加载了fs对象(fs模块),然后再从fs对象上读取方法
// ES6模块
import { exists, readFile } from 'fs';
上面ES6模块,实质上从fs模块加载2个对应的方法,其他方法不加载
区别3:严格模式 CommonJs模块和ES6模块的区别: (1)CommonJs模块默认采用非严格模式 (2)ES6 的模块自动采用严格模式,不管你有没有在模块头部加上 “use strict”; (3)CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用,举例如下
// m1.js
export var foo = 'bar';
setTimeout(() => foo = 'baz', 500);
// m2.js
import {foo} from './m1.js';
console.log(foo); //bar
setTimeout(() => console.log(foo), 500); //baz
ES6 模块之中,顶层的 this 指向 undefined ,即不应该在顶层代码使用 this