zoukankan      html  css  js  c++  java
  • 2020 前端面试问题总结

    该总结分为 CSS、JS、ES5/6、通用经验、程序设计、JS库、前端测试、React、Vue、Webpack、Node 进行总结。

    CSS

    1. BFC:www.cnblogs.com/libin-1/p/7…
    2. Flex:www.runoob.com/w3cnote/fle…
    3. Grid:segmentfault.com/a/119000001…
    4. 选择器
      • 权重:important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符
      • 用法
      • 伪类:LVHA(LV哈,简单明了)、focus、before、after、checked、disabled、last-child、first-child......
    5. 行内元素和块级元素有哪些?区别是什么?:不知道的童鞋前往前方
    6. 你理解的盒子模型?:围绕css3新属性 box-sizing 的两个值 content-box 和 border-box。
    7. 实现三列布局,左右固定宽度,中间响应式。兼容性尽量好?:常见的两列布局、三列布局实现要知道,知道2-3种实现方式为上策。而且兼容性方面也要知道,比如用了flex的话就兼容IE10+。
    8. 单位:vh、vw
    9. rem:www.cnblogs.com/phoebewang0…
    10. em:基于父元素
    11. offsetLeft 和 left 区别
    12. 手机屏幕展示缩放:
    13. 移动端适配页面
    14.  前端安全知识?怎么预防?怎么测试?:前端安全XSS、CSRF、SQL注入。什么场景会产生这些问题。预防和测试手段,测试手段比较少问。   

    JavaScript

    1. 闭包(内存)www.jianshu.com/p/26c81fde2…       https://www.jb51.net/article/188763.htm
      • 栈内存:存变量
      • 堆内存:存对象
      • 内存泄露
      • 深、浅拷贝
    2. setTimeout / setInterval / requestAnimationFrame
    3. this:www.cnblogs.com/snandy/p/47…
      • this
      • global
    4. 作用域
    5. 原型链
    6. 数据类型
      • 数据类型转换
      • 数据类型判断
        • typeof
        • instanceof
        • constructor
        • Object.prototype.toString.call('')
    7. 事件
    8. 实现链式调用
    9. 类数组对象(过时)
      • 只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为他是类数组对象
      • push方法实现
    10. 算法
      • 排序
      • 斐波那契数列
      • 树的转换
    11. 上下文
    12. 严格模式 "use strict"
    13. 循环:map、foreach、for in、for of
    14. 前端模板引擎 www.cnblogs.com/jingwhale/p…

    ECMAScript

    1. Promise
      • 状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
      • 实现过程:www.jianshu.com/p/b4f0425b2…
      • then 传递 promise(执行过程)
      • 使用promise模拟一个解决多级回调嵌套问题。
    2. 定义:var let const
      • 定义
      • 定义过程的内存变化
    3. 箭头函数
      • this 指向
      • arguments 替代方案
    4. reducer (实现map)
    5. fiter
    6. async/await
    7. for in 和 for of
    8. set 数组去重
    9. 函数稀释
    10. Class
      • 实现继承 - function和class的实现方法
      • proto、construct
    11. generator
    12. require、import差别
    13. map 和 set 差别
      • map 键值对
      • set 单一
    14. Iterator
      • foreach()

    通用经验

    1. 性能优化
    2. 前端路由:www.jianshu.com/p/d2aa8fb95…
      • hash
      • history API
    3. 跨域方案
      • cros (主要)
      • jsonp
      • ...
    4. cookie 大小、子域跨域、设置domin
    5. storage、浏览器缓存
    6. 安全相关
      • XSS
      • CSRF
    7. HTTP 1/1.1/2
      • 传输方式
      • 握手
    8. HTTPS
      • 端口
      • 安全原理
      • 中间人攻击
    9. HTTP状态码?常见的状态码和说明必须知道。200、204、206、301、302、304、307、400、401、403、404、500、503;304是怎么产生的还是要知道的。
    10. PWA segmentfault.com/a/119000001…
      • service worker
      • manifest.json
      • navigator.serviceWorker.register()
    11. fetch、axios、ajax
      • 特点、区别、使用

    程序设计

    1. 从URL输入到页面加载过程
      • 流程:缓存 -> DNS解析 -> TCP三次握手 -> HTTP请求 -> 数据响应 -> 页面渲染 -> TCP四次挥手
      • 浏览器渲染:创建DOM树—创建StyleRules—创建Render树—布局Layout—绘制Painting
      • 参考:www.cnblogs.com/daijinxue/p…
    2. DSL:针对特定应用领域而设计使用的计算机语言
      • 外部DSL
      • 内部DSL
    3. GPL:指的是针对跨应用领域而设计使用的计算机语言
    4. 静态语言 & 动态语言
    5. V8引擎 vs JavaScript Core
    6. MVC、MVVM、单向数据流、双向数据流
    7. 模块化定义
      • AMD:异步模块定义
      • CMD:同步模块定义
      • CommonJS规范:通过module.exports定义,基于Node
      • ES6特性:模块化-export/import对模块进行导出导入的
      • 参考:www.cnblogs.com/chenguangli…
    8. EventLoop
    9. 事件:宏任务(macro-task) 和 微任务 (micro-task)
      • 宏任务:包括整体代码script,setTimeout,setInterval
      • 微任务:Promise.then(非new Promise),process.nextTick(node中)
      • 事件的执行顺序,是先执行宏任务,然后执行微任务,这个是基础,任务可以有同步任务和异步任务,同步的进入主线程,异步的进入Event Table并注册函数,异步事件完成后,会将回调函数放入Event Queue中(宏任务和微任务是不同的Event Queue),同步任务执行完成后,会从Event Queue中读取事件放入主线程执行,回调函数中可能还会包含不同的任务,因此会循环执行上述操作。
    10. GWT:Google web Toolkit,是Google公司发布的基于Java语言开发AJAX应用的开发工具包。
    11. 函数式编程 www.cnblogs.com/tjyoung/p/8…
      • 纯函数
      • 柯里化
      • 函数组合
      • Point Free
      • 声明式与命令式代码
      • 高阶函数
    12. 递归与尾递归 www.ruanyifeng.com/blog/2015/0…
    13. AOP & OOP
    14. 观察者模式
      • 观察者模式
      • 发布/订阅模式
    15. JS编程模式:www.cnblogs.com/xianyulaodi…
    16. BFF架构:segmentfault.com/a/119000000…
    17. SSR
      • 优势、劣势
      • 实现
    18. 多端开发(实现原理)

    JS库

    1. lodash:blog.csdn.net/qq_35414779…
    2. axios:www.jianshu.com/p/7a9fbcbb1…
      • 拦截器:axios.interceptors.request.use(func(), func(err))
    3. bable:www.jianshu.com/p/cbd48919a…
      • @babel/cli
      • @babel/core
      • @babel/preset-env:环境包
      • @babel/polyfill :垫平不同浏览器或者不同环境下的差异
      • @babel/runtime:提供统一的模块化的helper插件
      • @babel/plugin-transform-runtime:插件
      • @babel/plugin-transform-xxx
      • .babelrc
      • presets
      • plugin
      • babel-stage-* (0覆盖1覆盖2覆盖3)
      • babel7升级内容
    4. eslint / jshint / csslint
    5. IndexDB

    前端测试

    1. jest
    2. mocha
    3. chai

    React

    1. 生命周期
      • 16版本新生命周期
      • 废除生命周期原因(涉及fiber)
    2. state、setState的原理
    3. hooks
    4. provider、connet、基于context
    5. 中间件
    6. redux-thunk
    7. redux-saga
    8. 高阶组件和受控组件
    9. 虚拟DOM
    10. Fiber
    11. render / commit
    12. react-router
    13. Redux
    14. Mobx
      • 与redux对比
      • 使用方式
    15. Dva(如用过)
      • 设计思路
      • 包含技术

    Vue

    1. 双向绑定
      • Object.defineProperty
    2. 生命周期
    3. 虚拟dom
      • diff算法
    4. keep-alive
    5. vue的渲染流程
    6. vue-router
    7. Vuex
      • 应用方法
      • 实现原理
      • 数据流
    8. vue的源码看过没?说说基本的实现?实现双向绑定的原理?

      即使没有实际地阅读过源码,也要找别人分享的博客去了解其中的原理。

      推荐博文

    9. react和vue你都使用过,说说它们的区别?推荐这篇文章
    10. 说说你理解的虚拟dom?diff算法是怎么做的?
      • 用JS对象模拟DOM树
      • 比较两棵虚拟DOM树的差异
      • 把差异应用到真正的DOM树上

      推荐《深度剖析,如何实现一个Virtual Dom算法》

    11. redux和vuex的区别?

      摘取尤大的知乎回答:

      Vuex 其实是一个针对 Vue 特化的 Flux,主要是为了配合 Vue 本身的响应式机制。当然吸取了一些 Redux 的特点,比如单状态树和便于测试和热重载的 API,但是也选择性的放弃了一些在 Vue 的场景下并不契合的特性,比如强制的 immutability(在保证了每一次状态变化都能追踪的情况下强制的 immutability 带来的收益就很有限了)、为了同构而设计得较为繁琐的 API、必须依赖第三方库才能相对高效率地获得状态树的局部状态等等(相比之下 Vuex 直接用 Vue 本身的计算属性就可以)

      所以 Vue + Vuex 会更简洁,也不需要考虑性能问题,代价就是 Vuex 只能和 Vue 配合。Vue + Redux 也不是不可以,但是 Redux 作为一个泛用的实现和 Vue 的契合度肯定不如 Vuex。


    Webpack

    1. 模块化打包工具
    2. loader执行顺序
      • 从下而上
      • 从右而左
    3. plugin
    4. loader
    5. rollup
    6. 打包性能优化
      • 缓存
      • 多进程
      • 插件

    Node.js

    1. Node 常用包
    2. 线程与进程
    3. 运维与部署
      • 守护进程
    4. 性能优化方案
    5. 项目设计
  • 相关阅读:
    leetcode 48. Rotate Image
    leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点) 、26/80. Remove Duplicates from Sorted ArrayI、II
    leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
    leetcode 58. Length of Last Word
    安卓操作的一些问题解决
    leetcode 378. Kth Smallest Element in a Sorted Matrix
    android studio Gradle Build速度加快方法
    禁用gridview,listview回弹或下拉悬停
    Android Studio找不到FragmentActivity类
    安卓获取ListView、GridView等滚动的距离(高度)
  • 原文地址:https://www.cnblogs.com/evaxtt/p/14545175.html
Copyright © 2011-2022 走看看