docs/algorithm

目录

HTML & CSS 篇

  • CSS 三列布局的实现方案

  • 如何用 Flex 画出一个直径 100px 的圆,并放在屏幕中间

  • CSS 如何实现垂直居中

  • CSS 的怪异盒模型

  • CSS3 新增的特性与用法。其好处是什么?

  • 什么是 BFC

  • CSS 的盒子模型 (W3C 和 IE)

  • 怎么让背景图留出 padding 的空档?[未解决]

  • transition 的属性值和应用

  • rem 和 em 的区别

  • CSS 中有哪些长度单位

  • 如何实现一个矩形的椭圆边角

  • 移动端布局方案

  • canvas 切图的原理

  • 常见的 CSS Selector

  • display: none 和 visibility: hidden 的区别

  • 解释一下 reflow (回流)与 repaint(重绘)

  • HTML5 新增了哪些元素?

  • 移动端适配的问题 [未解决]

  • 一个 Input 一个 Button,Button 里的文字长度不确定,怎么在一行内实现两个元素的自适应?(两栏自适应布局)

  • 常见的 CSS 布局方案 [未解决]

  • 关于 CSS 边距折叠的问题 [未解决]

  • 浮动元素会产生哪些影响?如何清除浮动?[未解决]

  • 如何在多行文字的末尾添加省略号?[未解决]

JavaScript 篇

  • JS 的基本类型有哪些,引用类型有哪些,二者有什么区别

  • 哪些类型是存在于栈上的,哪些是存在于堆上的。

  • null 和 undefined 的区别

  • JS 的继承有哪几种,分别有什么特点。

  • 什么是原型链?原型与原型链的区别?

  • ES6 的继承和 ES5 的继承有什么区别

  • 原生 Ajax 的实现步骤

  • 什么是闭包?什么时候构成闭包?

  • 如何禁止浏览器的默认事件?什么是事件冒泡?怎样防止事件冒泡?(CSS 也有一种方法)

  • readyState 的值分别代表什么状态。当 readyState === 3 的时候拔掉网线会怎么样?

  • 闭包的缺陷

  • 编写一个简单的递归函数

  • 说出 Event 对象的 3 - 5 个属性或方法

  • 如何改变函数的 this 的指向?call, apply, bind 的区别?

  • JS 如何实现数组的浅拷贝和深拷贝?

  • 如何将数组转换为字符串?

  • 如何将字符串转换为整数?

  • parseInt 的第二个参数代表什么

  • 完整的 map, reduce, filter 都包含哪些参数?

  • 简述一下 prototype

  • 事件冒泡与 Ajax 的兼容性问题 x

  • 给定一个 DOM 元素,获取它相对于视图窗口的坐标

  • offsetHeight, scrollHeight, clientHeight 分别代表什么

  • JavaScript 严格模式

  • 如何实现图片滚动懒加载

  • resize 和 scroll 性能优化

  • 页面加载的性能优化问题

  • throttle 和 debounce 的关系与区别

  • 如何对页面进行埋点? [未解决]

  • 如何检测 DOM 元素尺寸变化?[未解决]

  • 两个冷门的 JavaScript 问题

  • Array 能被直接继承吗?如果不能,为什么?该怎么实现继承?[未解决]

  • Array 的 Splice 可不可以添加元素?

  • 常用的正则校验与匹配表达式。[未解决]

  • 如何实现一个轮播组件?[未解决]

  • 在一个 <a> 标签中有一个 <span> 标签,点击 <span> 触发了点击事件,target 是谁?

  • 怎么给 1000 个 分别添加点击事件?(考虑性能)[未解决]

  • 怎么实现一个异步获取搜索结果的搜索框?如果用户频繁修改关键词,如何只让最后一次输入的结果生效?[未解决]

前端架构篇

  • Vue 1 和 Vue 2 的区别

  • 前后端分离的优点和缺点

  • 前端工程化的意义

  • 什么是 MVC,什么是 MVP,什么是 MVVM

  • Vuex 的工作原理

  • 项目如何实现模块化

  • AMD CMD UMD CommonJS ES6 对比

Web & Bowser 篇

  • https 有几次握手?

  • https 的原理

  • http 有几次握手?

  • TLS 的中文名?它属于网络结构的哪一层?

  • SSL 与 TLS 的关系是什么?

  • SSL/TLS 的原理是什么?

  • SSL 3.0 和 TSL 1.0 的关系

  • 负载均衡的方法。

  • DNS 进行负载均衡的原理

  • DNS 是基于 TCP 的还是 UDP 的。

  • Nginx 负载均衡的原理

  • 正向代理和反向代理的区别 

  • 浏览器是如何加载页面的?

  • Script 脚本阻塞有什么解决方法

  • defer 和 async 有什么区别

  • Socket.io 解决了什么问题,什么情况下用得到。

  • 计算机网络的五层结构与七层结构

  • TCP 在哪一层

  • IP 在哪一层

  • HTTP 在哪一层

  • 多线程和多进程的区别

  • HTTP 的状态与状态码有哪些

  • 常见的 HTTP Header

  • CDN 的用法

  • XSS 与 CSRF 的防范

  • 输入一个 URL 后发生了什么

  • 如何实现 Web 缓存机制

  • 服务器端更新脚本,如何保证客户端不受缓存机制影响,实时更新脚本?

  • HTTP 有几种请求方法,OPTIONS 请求方法的作用是什么?

  • HTTP 有哪些与缓存有关的状态码?

  • GET 和 POST 的区别

  • WebSocket 的实现机制和工作原理

  • 跨域是什么?前端如何解决跨域?

  • Cookie,Local Storage,Session Storage 的区别是什么?[未解决]

算法、数据结构与设计模式篇

Node 篇

Last updated