> For the complete documentation index, see [llms.txt](https://interview-cheatsheet.umaru.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://interview-cheatsheet.umaru.io/docs-algorithm/content.md).

# 目录

## 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 的区别是什么？\[未解决]

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

* [x] 常见的排序算法与其时间复杂度
* [ ] 常见的查找算法与其时间复杂度
* [ ] 深度优先遍历与广度优先遍历
* [x] 什么是完全二叉树？
* [x] 堆排序的原理
* [ ] 动态规划的原理与实现
* [x] fibonacci 数列的实现方法
* [x] 找出 n 个数中第 k 大的数
* [x] 从 100 万个数中找出最大的 100 个数
* [x] 两个房间，分别有三个开关和三个灯，每个房间只能进去一次，如何判断出开关对应的灯。
* [ ] 一个字符串 web(dev(ni(cat(new)))))找出第 n 个括号中的内容
* [x] DOM 树的深度优先遍历与广度优先遍历
* [x] JS 有哪些常用的设计模式
* [ ] 适配器模式适用的业务场景？

## Node 篇

* [ ] Node.js 的 Buffer 和 Stream 有什么区别


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://interview-cheatsheet.umaru.io/docs-algorithm/content.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
