面试题(未完待续)

145 阅读3分钟

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 输入为例子

image.png

image.png

image.png

组件接口设计

组件接口(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

webpack

blog.csdn.net/Aria_Miazzy…

websocket 前端实现