{"id":22588257,"url":"https://github.com/savoygu/blog","last_synced_at":"2025-08-02T02:40:13.742Z","repository":{"id":53444896,"uuid":"112548522","full_name":"savoygu/blog","owner":"savoygu","description":"面试、前端、Node.js、博客","archived":false,"fork":false,"pushed_at":"2023-03-04T12:52:07.000Z","size":2483,"stargazers_count":85,"open_issues_count":4,"forks_count":31,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-24T18:52:34.037Z","etag":null,"topics":["blog","frontend","interview","javascript","nodejs","vuejs"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/savoygu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-30T01:27:17.000Z","updated_at":"2025-02-18T01:55:20.000Z","dependencies_parsed_at":"2022-09-03T18:50:25.749Z","dependency_job_id":null,"html_url":"https://github.com/savoygu/blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/savoygu%2Fblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/savoygu%2Fblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/savoygu%2Fblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/savoygu%2Fblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/savoygu","download_url":"https://codeload.github.com/savoygu/blog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248301349,"owners_count":21080876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","frontend","interview","javascript","nodejs","vuejs"],"created_at":"2024-12-08T08:08:55.683Z","updated_at":"2025-04-10T21:32:05.157Z","avatar_url":"https://github.com/savoygu.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 新的征程 — 面试篇\n\n\u003e 这里呢，会不断整理出我在面试中遇到的问题、面试中可能遇到的问题，与大家分享，并尽可能给出详细解释，当然了如果你有更好的解答也可以参与进来，愿景是打造一份对标大厂 P6/P7 的面试指南。\n\u003e\n\u003e 面试不是目的，成长才是！希望大家在找到工作的同时，也能有所提升，一起加油，共勉！\n\n## 面试\n\n### HTML 篇\n\n### CSS 篇\n\n1. :tada: 制作布局\n\n   - :tada: [CSS 盒模型](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/%E7%9B%92%E6%A8%A1%E5%9E%8B.md) :star::star::star:\n   - :tada: [定位 Position](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/Position.md)\n   - :tada: [弹性布局 Flex](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/Flex.md)\n   - :tada: [网格布局 Grid](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/Grid.md)\n\n2. :tada: [两栏布局](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/%E4%B8%A4%E6%A0%8F%E5%B8%83%E5%B1%80.md)、[三栏布局](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/%E4%B8%89%E6%A0%8F%E5%B8%83%E5%B1%80.md) :star::star::star:\n\n3. :tada: [居中方式](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/CSS/%E5%B1%85%E4%B8%AD%E6%96%B9%E5%BC%8F.md) :star::star::star:\n\n4. :tada: [BFC](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/CSS/BFC.md) :star::star::star:\n\n### JavaScript 篇\n\n1. :tada: 手写系列\n\n   1.1 :tada: [instanceof](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/instanceof.md)\n\n   1.2 :tada: [new](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/new.md)\n\n   1.3 :tada: [apply](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/apply.md)\n\n   1.4 :tada: [call](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/call.md)\n\n   1.5 :tada: [bind](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/bind.md)\n\n   1.6 :tada: [throttle](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/throttle.md) :star::star::star:\n\n   1.7 :tada: [debounce](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/debounce.md) :star::star::star:\n\n   1.8 :tada: [Promise](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/Promise.md) :star:\n\n   1.9 :tada: [调度器](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/Scheduler.md)\n\n   1.10 :tada: [deepClone](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/deepClone.md) :star:\n\n   1.11 :tada: [EventEmitter](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/EventEmitter.md) :star::star::star:\n\n   1.12 :tada: [Ajax](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/Ajax.md)\n\n   1.13 :tada: [jsonp](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%89%8B%E5%86%99%E7%B3%BB%E5%88%97/jsonp.md)\n\n2. :construction: 深入原理\n\n   2.1 :tada: [变量声明提升](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E%E6%8F%90%E5%8D%87.md) :star::star:\n\n   2.2 :tada: [this 指向](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/this%E6%8C%87%E5%90%91.md) :star::star:\n\n   2.3 :tada: [原型与原型链](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E5%8E%9F%E5%9E%8B%E4%B8%8E%E5%8E%9F%E5%9E%8B%E9%93%BE.md)\n\n   2.4 :tada: [继承](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E7%BB%A7%E6%89%BF.md) :star::star:\n\n   2.5 :tada: [执行上下文](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E6%89%A7%E8%A1%8C%E4%B8%8A%E4%B8%8B%E6%96%87.md)\n\n   2.6 :tada: [作用域与作用域链](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%8E%E4%BD%9C%E7%94%A8%E5%9F%9F%E9%93%BE.md)\n\n   2.7 :tada: [上下文与作用域](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%8E%E4%BD%9C%E7%94%A8%E5%9F%9F.md)\n\n   2.8 :tada: [闭包](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E9%97%AD%E5%8C%85.md) :star::star::star:\n\n   2.9 :tada: [事件循环](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/JavaScript/%E6%B7%B1%E5%85%A5%E5%8E%9F%E7%90%86/%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF.md) :star::star::star:\n\n3. :construction: [DOM 相关]()\n\n   - :construction: [DOM Api]()\n\n   - :construction: [DOM 事件]()\n\n### 浏览器篇\n\n- :tada: [重绘/回流](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/%E6%B5%8F%E8%A7%88%E5%99%A8/%E9%87%8D%E7%BB%98%E5%9B%9E%E6%B5%81.md)\n\n- :tada: [渲染机制](https://github.com/savoygu/blog/tree/master/%E9%9D%A2%E8%AF%95/%E6%B5%8F%E8%A7%88%E5%99%A8/%E6%B8%B2%E6%9F%93%E6%9C%BA%E5%88%B6.md)\n\n- :tada: [跨域](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/%E6%B5%8F%E8%A7%88%E5%99%A8/%E8%B7%A8%E5%9F%9F.md)\n\n- :tada: [本地存储](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/%E6%B5%8F%E8%A7%88%E5%99%A8/%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8.md)\n\n- :tada: [浏览器缓存](https://github.com/savoygu/blog/blob/master/%E9%9D%A2%E8%AF%95/%E6%B5%8F%E8%A7%88%E5%99%A8/%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98.md)\n\n- :construction: [从输入 URL 到页面呈现发生了什么]()\n\n### Vue 篇\n\n- Vue2\n\n  :construction: [组件通信的方式]() :star::star::star:\n\n  :construction: [组件的生命周期]() :star::star::star:\n\n  :construction: [双向数据绑定流程]() :star::star::star:\n\n  :construction: [v-model 原理]() :star::star::star:\n\n  :construction: [key 的作用是什么?!]() :star::star::star:\n\n  :construction: [diff 算法实现原理]() :star:\n\n  :construction: [nextTick 实现原理]() :star:\n\n  \u003e 要点：宏任务和微任务\n\n  :construction: [插槽实现原理]() :star:\n\n  :construction: [源码赏析]()\n\n- Vue Router\n\n  - :construction: [路由模式 hash 和 history 有何区别]() :star::star::star:\n\n  - :construction: [导航守卫解析流程]()\n\n  - :construction: [keep-alive 实现原理]()\n\n  - :construction: [源码赏析]()\n\n  - 拓展\n\n    :construction: [如何用同步的方式实现异步?!]()\n\n- Vuex\n\n  :construction: [源码赏析]()\n\n- Vue Cli\n\n  :construction: [源码赏析]()\n\n- Vue3\n\n  :construction: [源码赏析]()\n\n### 工程化篇\n\n- :construction: [Webpack]()\n\n  - :construction: [构建流程]()\n\n  - :construction: [高级配置]()\n\n  - :construction: [性能优化]()\n\n  - :construction: [热更新原理]()\n\n- :construction: [Babel]()\n\n- :construction: [Vite]()\n\n### 性能优化篇\n\n- :construction: [长列表虚拟滚动实现]()\n\n### 小程序篇\n\n- :construction: [setData 原理]()\n\n- :construction: [双线程模型]()\n\n- :construction: [如何设计一个小程序框架]()\n\n### 常用库篇\n\n- Axios\n\n  - :construction: [请求和响应拦截器实现原理]()\n\n  - :construction: [源码赏析]()\n\n### 网络篇\n\n- :construction: [HTTP]()\n\n  \u003e 要点：三次握手、四次挥手\n\n### 前端安全篇\n\n- :construction: [CSRF]()\n\n- :construction: [XSS]()\n\n### 综合篇\n\n- :construction: [说说一个大文件上传和断点续传的实现思路]()\n\n### 算法与数据结构篇\n\n- :construction: [排序算法]()\n\n  - :construction: [冒泡排序]()\n\n  - :construction: [快速排序]()\n\n- :construction: [字符串]()\n\n- :construction: [数组、链表]()\n\n- :construction: [栈、队列]()\n\n- :construction: [树、二叉树、二叉搜索树]()\n\n- :construction: [堆、二叉堆、图]()\n\n- :construction: [哈希表、映射、集合]()\n\n- :construction: [递归]()\n\n- :construction: [分治、回溯]()\n\n- :construction: [深度优先搜索(DFS)、广度优先搜索(BFS)]()\n\n- :construction: [贪心]()\n\n- :construction: [二分]()\n\n- :construction: [动态规划]()\n\n- :construction: [并查集]()\n\n- :construction: [位运算]()\n\n- :construction: [缓存(LRU、LFU)]()\n\n## 前端\n\n## Node.js\n\n## 博客\n\n1. [:tada:] [深入理解 javascript 原型和闭包](https://github.com/savoygu/blog/blob/master/%E5%8D%9A%E5%AE%A2/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3javascript%E5%8E%9F%E5%9E%8B%E5%92%8C%E9%97%AD%E5%8C%85/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3javascript%E5%8E%9F%E5%9E%8B%E5%92%8C%E9%97%AD%E5%8C%85.md) [非原创, @王福朋]\n\n2. [:tada:] [Node.js 项目线上服务器部署与发布](https://github.com/savoygu/blog/blob/master/%E5%8D%9A%E5%AE%A2/Node.js%E9%A1%B9%E7%9B%AE%E7%BA%BF%E4%B8%8A%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%8F%91%E5%B8%83/Node.js%E9%A1%B9%E7%9B%AE%E7%BA%BF%E4%B8%8A%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%8F%91%E5%B8%83.md) [非原创, @Scott]\n\n3. [:construction:] [致姗姗来迟的 Sass](https://github.com/savoygu/blog/blob/master/%E5%8D%9A%E5%AE%A2/%E8%87%B4%E5%A7%97%E5%A7%97%E6%9D%A5%E8%BF%9F%E7%9A%84%20Sass/%E8%87%B4%E5%A7%97%E5%A7%97%E6%9D%A5%E8%BF%9F%E7%9A%84%20Sass.md) [原创]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsavoygu%2Fblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsavoygu%2Fblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsavoygu%2Fblog/lists"}