├── 算法 ├── 归并排序.md ├── zoo │ ├── index.md │ └── 字符串.js ├── 2_排序.md └── base.js ├── 面试题 ├── 算法 │ ├── 排序 │ │ ├── 堆排序.js │ │ ├── 选择排序.js │ │ ├── 快排.js │ │ ├── 冒泡排序.js │ │ ├── 插入排序-玩牌.js │ │ └── 1.两个有序数组融合成一个有序数组.js │ ├── 数组 │ │ ├── 4.输出 1-10000 之间的对称数.js │ │ ├── 2.把一个数组随机打乱顺序.js │ │ ├── 3.把一个非零数组中的零都移动数组的后边,要求不能使用新数组,原来数组非零位置不能移动.js │ │ ├── 1.数组回环.js │ │ ├── 5.求数组中的最大连续和最大的子串.js │ │ ├── 0.两数和.js │ │ └── 6.n项和等于 sum.js │ ├── 二叉树 │ │ ├── index.md │ │ ├── 2.反转.js │ │ ├── 5.二叉树轮廓.js │ │ ├── 4.每行最大值.js │ │ └── 3.二叉树深度.js │ ├── 字符串 │ │ ├── 1.字符串包含.js │ │ ├── 3.abcd字典序.js │ │ ├── 2.最长不重复子串问题.js │ │ ├── 5.获取字符串中有重复字符的字符和长度,没有的话返回.js │ │ └── 4.两个字符串,在长字符串中取出包含短字符串的最短字符串:‘abcd’‘ca’=》‘abc’。考虑重复.js │ ├── 链表 │ │ ├── index.md │ │ ├── 1.创建一个链表结构.js │ │ ├── 3.链表是否有环.js │ │ └── 2.链表反转.js │ ├── 其他 │ │ ├── 1. 斐波那契数列.js │ │ ├── 3.拆红包.js │ │ └── 2.去除掉对象数组中重复的对象.js │ └── 查找 │ │ ├── 1.二分查找.js │ │ └── 2.找零钱.js ├── css │ ├── 3.position.md │ ├── 22.选择优先级.md │ ├── 17.为什么 marign 0 auto 无法垂直居中.md │ ├── 14.css3 属性.md │ ├── 15.css 中的 px,rem,em,vw,vh.md │ ├── 19.元素替换.md │ ├── 18.z-index.md │ ├── 4.display none opacity: 0 visibility:hidden.md │ ├── 11.css 中的 scope 为什么可以实现局部作用.md │ ├── 23.inline-block 间隙根本原因.md │ ├── 20.画一个三角形.md │ ├── 10.grid.md │ ├── 基础.md │ ├── 16.伪元素 ::before 与伪类 :first-child 的区别.md │ ├── 24.font-display 控制字体加载和替换 .md │ ├── 13.1px dip dp.md │ ├── 21.硬件加速.md │ └── 6.BFC 应用、盒子模型.md ├── HTTP │ ├── HTTP协议.xmind │ ├── 1.post 和 put 请求有什么区别.md │ ├── 3.说几个缓存相关的 HTTP 状态码, 301 和 302 区别,浏览器接收到 301 302 如何处理.md │ ├── 15.心跳机制.md │ ├── 2.http 缓存原理,前端缓存了解哪些,网络缓存和前端缓存如何交互,协商缓存浏览器如何判断.md │ ├── 13.content-type.md │ ├── 8.DNS 寻址过程.md │ ├── 10.TCP 和 UDP 区别是什么.md │ ├── 9.get 和 post 有什么区别.md │ ├── 7.CDN 理解,有 CDN 和没有 CDN 区别.md │ ├── 11.谈谈你对 dns-prefetch 的理解.md │ ├── 4.三次握手,四次挥手,为什么挥手不能用三次.md │ ├── 12.TCP 滑动窗口、重试机制.md │ ├── 5.http1 和 http2 的区别, http2 做了那些改进,有哪些不足,http3 做了那些改进.md │ └── 14.理想模型md ├── js │ ├── 30.箭头函数于普通函数区别.md │ ├── 3.map,forEach 的区别.md │ ├── 24.为什么原生的 form 表单提交没有跨域问题(form 请求和 ajax 请求有什么不同).md │ ├── 11.ES6 上数组上扩展了哪些方法.md │ ├── 5.引用类型怎么存储,js 中的堆和栈有什么区别.md │ ├── 28.[]+{}.md │ ├── 7.Object.prototype.toString 返回什么.md │ ├── 40.'use strict' 的作用是什么.md │ ├── 26.new 操作符, 构造函数和普通函数区别, 函数有 return 返回什么.md │ ├── 31.柯里化.md │ ├── 18.深拷贝和浅拷贝.md │ ├── 35.isNaN 和 number.isNaN 区别.md │ ├── 函数 │ │ └── eval.md │ ├── 41.如何判断是 new 还是函数调用.md │ ├── 6.slice,splice,区别,是否改变数组.md │ ├── 32.0.1 + 0.2 !== 0.3,如何解决上面说的精确度丢失问题,number 最大数.md │ ├── 15.实现 reduce foreach, forEach与for循环,谁的性能更好.md │ ├── 34.a===1&&a===2&&a===3 为 true.md │ ├── 36.随机数.md │ ├── 12.事件机制捕获、冒泡.md │ └── 29.模块化.md ├── vue │ ├── 5.vue 组件如何通讯.md │ ├── 11.依赖收集.md │ ├── 6.reactive ref 区别.md │ ├── 区别 │ │ └── Vue2 和 Vue3 区别.md │ ├── 7.vuex 的数据流 核心原理是什么.md │ ├── 10.compiler diff 原理.md │ ├── 3.虚拟 dom.md │ ├── 9.minxins.md │ ├── vue3 │ │ └── index.md │ ├── 2.vue数组是否响应.md │ ├── 4.全局注册组件vue use 干了什么.md │ └── 1.vue响应式原理.html ├── 运行题 │ ├── 作用域.js │ ├── 词法环境.js │ ├── let.js │ ├── call.js │ ├── fn.js │ ├── this.js │ ├── 变量提升.js │ └── 原型链.js ├── 练习环境 │ ├── 7.deepClone.js │ ├── 15.排序.js │ ├── 4.观察者.js │ ├── 3.new.js │ ├── 5.ajax.html │ ├── 6.generator.js │ ├── 9.a.b.c.e=abc.js │ ├── 2.jsonp.html │ ├── 14.查找.js │ ├── 1.bind.js │ ├── 8.compose.js │ ├── 10.二叉树.js │ ├── 16.字符串&数组.js │ ├── 12.throttle.html │ └── 13.promise.js ├── webpack │ ├── 9.webpack 的 tree shaking 是怎么实现的.md │ ├── 12.vite.md │ ├── 2.webpack 的三种 hash、chunkHash、contentHash 有什么区别.md │ ├── 4.如何实现一个 plugin 插件.md │ ├── 7.loader 执行顺序.md │ ├── 6.webpack 构建优化、前端性能优化.md │ ├── 11.讲一下 Rollup 和 webpack 的区别.md │ └── 3.source map 怎么用.md ├── 手写 │ ├── 22.sleep.js │ ├── 20.写一个正则表达式,校验 aabb..js │ ├── 5.实现一个 flat.js │ ├── 23.模版引擎.js │ ├── 17.位运算.js │ ├── 10.写一下响应式处理的核心逻辑(Object.defineProperty 那段).js │ ├── 11.怎么算出精确的数.js │ ├── promise │ │ ├── 2.实现 Promise.allSettled 方法.js │ │ ├── 并发.js │ │ ├── promise 实现 │ │ │ └── 1.简陋.js │ │ └── generator │ │ │ └── 9.generator next 遍历.js │ ├── 16.随机数.js │ ├── 18.把input转换成output格式对象.js │ ├── index.md │ ├── 8.判断大小写 并把大写转小写 小写转大写.js │ ├── 1.手写字符串连接符-变驼峰.js │ ├── 21.localStorage.js │ └── 防抖节流 │ │ └── 22.debounce-版本.js ├── npm │ └── index.md ├── 浏览器 │ ├── 6.onload 和 DOMContentLoaded 的区别.md │ ├── 1.浏览器进程,渲染进程,渲染流程.md │ └── 5.跨域.md └── ts │ └── extrace.ts ├── JS └── 基础 │ ├── 跨域 │ ├── proxy │ │ ├── node_modules │ │ │ ├── ms │ │ │ ├── debug │ │ │ ├── http-proxy │ │ │ ├── eventemitter3 │ │ │ ├── requires-port │ │ │ ├── _debug@3.2.6@debug │ │ │ │ ├── node_modules │ │ │ │ │ └── ms │ │ │ │ ├── node.js │ │ │ │ ├── src │ │ │ │ │ └── index.js │ │ │ │ └── LICENSE │ │ │ ├── follow-redirects │ │ │ ├── _http-proxy@1.18.0@http-proxy │ │ │ │ ├── .gitattributes │ │ │ │ ├── node_modules │ │ │ │ │ ├── eventemitter3 │ │ │ │ │ ├── requires-port │ │ │ │ │ └── follow-redirects │ │ │ │ ├── .auto-changelog │ │ │ │ ├── codecov.yml │ │ │ │ ├── index.js │ │ │ │ ├── renovate.json │ │ │ │ ├── LICENSE │ │ │ │ └── package.json │ │ │ ├── _requires-port@1.0.0@requires-port │ │ │ │ ├── .npmignore │ │ │ │ ├── .travis.yml │ │ │ │ ├── index.js │ │ │ │ ├── LICENSE │ │ │ │ └── package.json │ │ │ ├── _follow-redirects@1.10.0@follow-redirects │ │ │ │ ├── node_modules │ │ │ │ │ └── debug │ │ │ │ ├── http.js │ │ │ │ ├── https.js │ │ │ │ └── LICENSE │ │ │ ├── _ms@2.1.2@ms │ │ │ │ ├── package.json │ │ │ │ └── license.md │ │ │ └── _eventemitter3@4.0.0@eventemitter3 │ │ │ │ └── LICENSE │ │ ├── README.md │ │ ├── node │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── index.html │ │ └── server.js │ ├── socket │ │ ├── node │ │ │ ├── node_modules │ │ │ │ ├── ws │ │ │ │ └── _ws@7.2.1@ws │ │ │ │ │ ├── browser.js │ │ │ │ │ ├── lib │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── validation.js │ │ │ │ │ └── limiter.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── LICENSE │ │ │ └── server.js │ │ └── index.html │ ├── nginx │ │ ├── README.md │ │ ├── nginx │ │ │ └── conf.d │ │ │ │ └── default.conf │ │ ├── server.js │ │ └── index.html │ ├── cors │ │ ├── README.md │ │ ├── server.js │ │ ├── node │ │ │ └── index.js │ │ └── index.html │ ├── postMessage │ │ ├── iframe │ │ │ ├── README.md │ │ │ ├── serverTo.js │ │ │ ├── serverFrom.js │ │ │ ├── to.html │ │ │ └── from.html │ │ └── open │ │ │ ├── README.md │ │ │ ├── serverFrom.js │ │ │ ├── serverTo.js │ │ │ ├── to.html │ │ │ └── from.html │ ├── jsonp │ │ ├── README.md │ │ ├── node │ │ │ └── index.js │ │ ├── jsonp_node.html │ │ └── jsonp_baidu_简易.html │ ├── name │ │ ├── a2.html │ │ ├── b.html │ │ ├── serverB.js │ │ ├── serverA.js │ │ └── a1.html │ ├── hash │ │ ├── a2.html │ │ ├── serverB.js │ │ ├── a1.html │ │ ├── b.html │ │ └── serverA.js │ └── domain │ │ ├── serverA.js │ │ ├── serverB.js │ │ ├── b.html │ │ └── a.html │ ├── 异步.md │ ├── EventLoop │ ├── 1.微任务宏任务.js │ ├── 2.promise.executor.js │ ├── test.js │ ├── 3.promise.then.js │ └── 4.async.await.js │ ├── 深浅拷贝.md │ ├── 作用域.md │ ├── 浏览器渲染过程.md │ ├── 数组操作.md │ └── 跨域.md ├── 其他 ├── 教训 │ ├── git分支.md │ ├── 密码.md │ └── 数据库被删.md ├── 吐个槽 │ ├── images │ │ ├── 椭圆形.png │ │ ├── WechatIMG75.png │ │ ├── WX20190412-093123@2x.png │ │ └── WX20190412-100915@2x.png │ ├── php.md │ └── 接盘侠.md ├── 化险为夷 │ └── Echart.md └── 坑 │ └── bootstrap.md ├── 经验 └── 需求.md ├── .DS_Store ├── 问题 ├── 热力图 │ └── WechatIMG72.png ├── 项目流程 │ ├── 测试优先级问题.md │ └── 项目上线出现一堆问题.md ├── 管理.md ├── nuxt.md ├── input默认颜色.md ├── 邮件 │ └── 邮件.md └── 浏览器定位.js ├── 题目 ├── 2019实习应届.md ├── 2019题目.md └── 2019三年内.md ├── Blog └── 2019.md └── 反问 └── 2019.md /算法/归并排序.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /算法/zoo/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /面试题/算法/排序/堆排序.js: -------------------------------------------------------------------------------- 1 | 快速排序; 2 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/ms: -------------------------------------------------------------------------------- 1 | _ms@2.1.2@ms -------------------------------------------------------------------------------- /JS/基础/跨域/socket/node/node_modules/ws: -------------------------------------------------------------------------------- 1 | _ws@7.2.1@ws -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/debug: -------------------------------------------------------------------------------- 1 | _debug@3.2.6@debug -------------------------------------------------------------------------------- /其他/教训/git分支.md: -------------------------------------------------------------------------------- 1 | ## 2019-09-05 2 | - git分支忘记切换,造成提交到demo平台代码被破坏 -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/http-proxy: -------------------------------------------------------------------------------- 1 | _http-proxy@1.18.0@http-proxy -------------------------------------------------------------------------------- /经验/需求.md: -------------------------------------------------------------------------------- 1 | ### 越是没有要求的需求,事后要求越多 2 | 3 | ### 任何不绘制原型的产品,都会满足不了你的需求 4 | 5 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/eventemitter3: -------------------------------------------------------------------------------- 1 | _eventemitter3@4.0.0@eventemitter3 -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/requires-port: -------------------------------------------------------------------------------- 1 | _requires-port@1.0.0@requires-port -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/.DS_Store -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_debug@3.2.6@debug/node_modules/ms: -------------------------------------------------------------------------------- 1 | ../../_ms@2.1.2@ms -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/follow-redirects: -------------------------------------------------------------------------------- 1 | _follow-redirects@1.10.0@follow-redirects -------------------------------------------------------------------------------- /其他/教训/密码.md: -------------------------------------------------------------------------------- 1 | ## 2019-05-31 2 | - .ftpconfig 文件包含服务器配置信息 一并上传到服务器中,大忌 3 | - DB密码与服务器密码一样 大忌 -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_debug@3.2.6@debug/node.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./src/node'); 2 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/.gitattributes: -------------------------------------------------------------------------------- 1 | package-lock.json binary 2 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_requires-port@1.0.0@requires-port/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | coverage 3 | -------------------------------------------------------------------------------- /面试题/css/3.position.md: -------------------------------------------------------------------------------- 1 | - position: sticky 不会脱离文档流 2 | 3 | ## 脱离文档流 4 | 5 | - fixed 6 | - absolute 7 | -------------------------------------------------------------------------------- /其他/吐个槽/images/椭圆形.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/其他/吐个槽/images/椭圆形.png -------------------------------------------------------------------------------- /面试题/HTTP/HTTP协议.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/面试题/HTTP/HTTP协议.xmind -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_follow-redirects@1.10.0@follow-redirects/node_modules/debug: -------------------------------------------------------------------------------- 1 | ../../_debug@3.2.6@debug -------------------------------------------------------------------------------- /问题/热力图/WechatIMG72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/问题/热力图/WechatIMG72.png -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_follow-redirects@1.10.0@follow-redirects/http.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./").http; 2 | -------------------------------------------------------------------------------- /其他/教训/数据库被删.md: -------------------------------------------------------------------------------- 1 | # 2019-11-27 数据库被删 2 | 3 | 数据库被删,且在数据库中注入勒索文字,庆幸只是自己服务器数据,本地有备份; 4 | 5 | 通过这件事,数据备份的重要性,数据库强化密码的重要性 -------------------------------------------------------------------------------- /面试题/css/22.选择优先级.md: -------------------------------------------------------------------------------- 1 | # 选择优先级 2 | !important > 内敛[1000] > ID[100] > 类|伪类|属性[10] > 标签 [1]> (通配符* 子类 | 兄弟)+[0] 3 | 4 | -------------------------------------------------------------------------------- /面试题/js/30.箭头函数于普通函数区别.md: -------------------------------------------------------------------------------- 1 | # 箭头函数于普通函数区别 2 | 3 | 没有 this, 不可以 new 4 | 没有 arguments 5 | 箭头函数的 this 指向外外层第一个函数的 this 6 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_follow-redirects@1.10.0@follow-redirects/https.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./").https; 2 | -------------------------------------------------------------------------------- /其他/吐个槽/images/WechatIMG75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/其他/吐个槽/images/WechatIMG75.png -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/node_modules/eventemitter3: -------------------------------------------------------------------------------- 1 | ../../_eventemitter3@4.0.0@eventemitter3 -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/node_modules/requires-port: -------------------------------------------------------------------------------- 1 | ../../_requires-port@1.0.0@requires-port -------------------------------------------------------------------------------- /JS/基础/跨域/nginx/README.md: -------------------------------------------------------------------------------- 1 | # 运行 2 | - 如果有自己服务器,找到服务器对应的 conf.d 配置文件 3 | 4 | - 因为为测试,所以 自行添加 `add_header "Access-Control-Allow-Origin" "*";` -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/node_modules/follow-redirects: -------------------------------------------------------------------------------- 1 | ../../_follow-redirects@1.10.0@follow-redirects -------------------------------------------------------------------------------- /面试题/js/3.map,forEach 的区别.md: -------------------------------------------------------------------------------- 1 | # map,forEach 的区别 2 | 3 | - map forEach 都不可以中止 4 | - map 返回一个新数组,支持链式,不改变原数组 5 | - forEach 无返回值,不支持链式调用 6 | -------------------------------------------------------------------------------- /其他/吐个槽/images/WX20190412-093123@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/其他/吐个槽/images/WX20190412-093123@2x.png -------------------------------------------------------------------------------- /其他/吐个槽/images/WX20190412-100915@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maotianyuan/FrontEndInterView/HEAD/其他/吐个槽/images/WX20190412-100915@2x.png -------------------------------------------------------------------------------- /面试题/HTTP/1.post 和 put 请求有什么区别.md: -------------------------------------------------------------------------------- 1 | # post 和 put 请求有什么区别 2 | 3 | 都可以更新、创建资源 4 | 5 | post 发送两次相同请求,结果不一样,增资源, 不是幂等 6 | put 发送两次相同的请求,得到的结果一样,更新传输文件 7 | -------------------------------------------------------------------------------- /面试题/vue/5.vue 组件如何通讯.md: -------------------------------------------------------------------------------- 1 | # 5.vue 组件如何通讯 2 | 3 | - prop emit 4 | - v-model 5 | - provider inject 6 | - $parent $children 7 | - vuex 8 | - eventbus 9 | -------------------------------------------------------------------------------- /JS/基础/跨域/cors/README.md: -------------------------------------------------------------------------------- 1 | # 运行 2 | - 终端运行 `node server.js`, 目的在8080 端口号打开页面 index.html 3 | 4 | - 进入 cors\node 页面,终端运行 `node index.js`, 目的打开 9000 端口号, 返回数据 5 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/README.md: -------------------------------------------------------------------------------- 1 | # 运行 2 | - 终端运行 `node server.js`, 目的在8080 端口号打开页面 index.html 3 | 4 | - 进入 proxy\node 页面,终端运行 `node index.js`, 目的打开 9000 端口号,返回数据 5 | -------------------------------------------------------------------------------- /面试题/运行题/作用域.js: -------------------------------------------------------------------------------- 1 | function two() { 2 | console.log(a); 3 | } 4 | function one() { 5 | var a = 2; 6 | two(); 7 | } 8 | var a = 1; 9 | one(); 10 | -------------------------------------------------------------------------------- /面试题/css/17.为什么 marign 0 auto 无法垂直居中.md: -------------------------------------------------------------------------------- 1 | # 17.为什么 marign 0 auto 无法垂直居中 2 | 3 | 块级元素可以水平居中:块级元素设置了宽高,但是仍然占据一行,会将这一行剩余空间平均分为左右两边 4 | 块级元素不能垂直居中,是因为垂直方向上没有默认剩余空间 5 | -------------------------------------------------------------------------------- /问题/项目流程/测试优先级问题.md: -------------------------------------------------------------------------------- 1 | ## 样式 2 | 问题:在对接后台的过程中,需要修复第一阶段的功能样式问题,工作重叠 3 | 诊断:部分功能,部分样式,揉杂在一起,且没有优先级,看到问题当天或隔天必须停下手头安排的事项,必须改完 4 | 解决:对 Bug 分优先级,开发有权对等级较低的样式问题,项目规划表在最后阶段添加样式解决时间 5 | -------------------------------------------------------------------------------- /面试题/css/14.css3 属性.md: -------------------------------------------------------------------------------- 1 | # css3 属性 2 | 3 | border-radius: 4 | box-shadow 5 | border-image 6 | background-iamge: 7 | transform 8 | transtion 9 | animation @keyframes 10 | -------------------------------------------------------------------------------- /JS/基础/跨域/postMessage/iframe/README.md: -------------------------------------------------------------------------------- 1 | # 运行 2 | - 终端运行 `node serverFrom.js`, 目的在8080 端口号 打开页面 from.html 3 | - 终端运行 `node serverTo.js`, 目的在9000 端口号 4 | 5 | - from 输入框中发送给 to 数据信息 6 | -------------------------------------------------------------------------------- /面试题/css/15.css 中的 px,rem,em,vw,vh.md: -------------------------------------------------------------------------------- 1 | # css 中的 px,rem,em,vw,vh 2 | 3 | ## vw 1vw = 视口宽度的 1% 4 | 5 | vw 相对于视窗的宽度:视窗宽度是 100vw 6 | 则 1vm 是视区宽度的 1/100, 也就是 1% 7 | 8 | # 1vh = 视口高度的 1% 9 | -------------------------------------------------------------------------------- /其他/化险为夷/Echart.md: -------------------------------------------------------------------------------- 1 | ## 2019-05-31 2 | - 绘制Echart地图,忽视右侧柱状图数值的对比,而不是阶梯有序递减,应按照原始值展示,产品在ppt中已经按照这种绘制了十多张图,最后技术来重新绘制,由于电脑不一样导致字体渲染不一致,最后只将右侧柱子图修改,然后运用ppt图片组合模式,以及置于底层,将两张图合二为一,最终解决;耗时1个多小时; 3 | 4 | -------------------------------------------------------------------------------- /JS/基础/异步.md: -------------------------------------------------------------------------------- 1 | # 异步 2 | 3 | - 并发(concurrency)和并行(parallelism)区别 4 | 5 | >并发是宏观概念,我分别有任务 A 和任务 B,在一段时间内通过任务间的切换完成了这两个任务,这种情况就可以称之为并发。 6 | >并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同时完成任务 A、B。同时完成多个任务的情况就可以称之为并行。 -------------------------------------------------------------------------------- /面试题/js/24.为什么原生的 form 表单提交没有跨域问题(form 请求和 ajax 请求有什么不同).md: -------------------------------------------------------------------------------- 1 | # 为什么原生的 form 表单提交没有跨域问题(form 请求和 ajax 请求有什么不同) 2 | 3 | form 请求不需要返回,ajax 需要返回 4 | 浏览器不阻止你像另一个域名发送请求 5 | ajax 是想要读取相应的内容,浏览器不允许这样做 6 | -------------------------------------------------------------------------------- /面试题/vue/11.依赖收集.md: -------------------------------------------------------------------------------- 1 | # 依赖收集 2 | 3 | - 先渲染当前 watcher 4 | - 渲染时候 get 变量,进行 Dep.depend 值为 Watcher 添加自己的 Dep 5 | - set 变量时候,发布事件,循环当前 Dep 中 Watcher 并执行 6 | - 因为会频繁设置值,会导致多次运行 Watcher, 故发布前去重,并异步更新 7 | -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/.auto-changelog: -------------------------------------------------------------------------------- 1 | { 2 | "output": "CHANGELOG.md", 3 | "template": "keepachangelog", 4 | "unreleased": true, 5 | "commitLimit": false 6 | } -------------------------------------------------------------------------------- /面试题/js/11.ES6 上数组上扩展了哪些方法.md: -------------------------------------------------------------------------------- 1 | # ES6 上数组上扩展了哪些方法 2 | 3 | - includes 4 | - reduce 5 | - map 6 | - entries 7 | - filter 8 | - every 9 | - some 10 | 11 | - isArray 12 | - find 13 | - Array.from 14 | -------------------------------------------------------------------------------- /问题/管理.md: -------------------------------------------------------------------------------- 1 | - 新兴技术无法施展 [带动宣读、组长需要起带头作用] 2 | - 安排的方案,得不到实施 [工具] 3 | - 代码审核没有积极性 [一方面工具限制、组长带头进行 CR ] 4 | - 代码规范意识不足 [工具限制 + CR] 5 | - 写代码能用即可 [代码审查] 6 | - 情绪问题 [努力提高团队能力,每个人都渴望成长,用心带领] 7 | - 把控沟通问题 [TL 项目查看] 8 | -------------------------------------------------------------------------------- /JS/基础/跨域/postMessage/open/README.md: -------------------------------------------------------------------------------- 1 | # 运行 2 | - 终端运行 `node serverFrom.js`, 目的在8080 端口号,并打开页面 from.html 3 | - 终端运行 `node serverTo.js`, 目的在9000 端口号 4 | 5 | - from 输入框中发送给 to 数据信息,打开新窗口,每秒钟回回传递给 to.html 数据,可在新弹出页面中查看 6 | -------------------------------------------------------------------------------- /JS/基础/跨域/jsonp/README.md: -------------------------------------------------------------------------------- 1 | # 文件 jsonp_baidu_简易.html 2 | - jsonp 调用的是百度接口搜索接口,可直接打开 jsonp_baidu_简易.html 直接查看效果 3 | 4 | # 文件 json_node.html 5 | - 需要进入 node 目录 6 | - 执行 `node index.js` 正常启动 7 | - 打开 jsonp_node.html 方可搜索到固定伪数据 -------------------------------------------------------------------------------- /面试题/练习环境/7.deepClone.js: -------------------------------------------------------------------------------- 1 | let obj = { 2 | a: 1, 3 | b: { 4 | c: "abc", 5 | }, 6 | x: 10, 7 | }; 8 | 9 | obj.x = obj; 10 | 11 | const deepClone = () => {}; 12 | 13 | let result = deepClone(obj); 14 | console.log(result); 15 | -------------------------------------------------------------------------------- /问题/nuxt.md: -------------------------------------------------------------------------------- 1 | # 引用团队不常用技术栈 2 | 3 | - 框架 Api 查阅使用 4 | - SSR 请求接口请求区别 5 | - 跨域解决 6 | - 阿里云部署 Node 搭建 Nginx 配置 7 | - pm2 启动器使用,自动部署 8 | - 测试线上环境变量区分 9 | - 后端的不理解,所以你不能出错,也不会给你很多尝试示错 10 | - 需要百度点石自动化部署 11 | - 通过配置改为 Docker 手动部署,但与百度路由冲突,只由将 Nuxt 改为 SPA -------------------------------------------------------------------------------- /面试题/运行题/词法环境.js: -------------------------------------------------------------------------------- 1 | /////////////豪华分割线/////////////////// 2 | 3 | ("use strict"); 4 | var a = 1; 5 | console.log(a); //1 6 | { 7 | console.log(a); // a = 1 8 | function a() { 9 | console.log(1); // 1 10 | } 11 | } 12 | console.log(a); 13 | -------------------------------------------------------------------------------- /JS/基础/跨域/socket/node/node_modules/_ws@7.2.1@ws/browser.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function() { 4 | throw new Error( 5 | 'ws does not work in the browser. Browser clients must use the native ' + 6 | 'WebSocket object' 7 | ); 8 | }; 9 | -------------------------------------------------------------------------------- /面试题/练习环境/15.排序.js: -------------------------------------------------------------------------------- 1 | const bubbleSort = (data) => { 2 | return data; 3 | } 4 | 5 | 6 | const sectionSort = (data) => { 7 | 8 | return data; 9 | }; 10 | 11 | const arr = [1,5,2,6,8,10,4,20,15] 12 | 13 | const target = sectionSort(arr); 14 | console.log(target) -------------------------------------------------------------------------------- /JS/基础/跨域/proxy/node_modules/_http-proxy@1.18.0@http-proxy/codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | parsers: 3 | javascript: 4 | enable_partials: yes 5 | status: 6 | project: 7 | default: 8 | target: "70%" 9 | patch: 10 | enabled: false 11 | -------------------------------------------------------------------------------- /面试题/webpack/9.webpack 的 tree shaking 是怎么实现的.md: -------------------------------------------------------------------------------- 1 | # webpack 的 tree shaking 是怎么实现的 2 | 3 | - ES6 Module 引入进行静态分析,故而编译的时候正确判断到底加载了那些模块 4 | - 静态分析程序流,判断那些模块和变量未被使用或者引用,进而删除对应代码 5 | 6 | - 借助 ES6 模块语法的静态结构,通过编译阶段的静态分析,找到没有引入的模块并打上标记, 7 | - 然后在压缩阶段利用像 uglify-js 这样的压缩工具删除这些没有用到的代码。 8 | -------------------------------------------------------------------------------- /其他/坑/bootstrap.md: -------------------------------------------------------------------------------- 1 | - 问题:bootstrap 在弹出layer中,input失效,无法输入文字 2 | - 过程: 3 | - 排除layer: 找layer官网插件用发现没有问题 4 | - 排除z-index: 通过页面修改css发现只有modal none才能focus,知道为bootstrap问题 5 | - 解决:tabindex取消 6 | [Bootstrap 弹出框modal上层的输入框不能获得焦点](https://blog.csdn.net/u011127019/article/details/52316987) -------------------------------------------------------------------------------- /JS/基础/跨域/socket/node/server.js: -------------------------------------------------------------------------------- 1 | const WebSocket = require('ws') 2 | 3 | let wss = new WebSocket.Server({ port: 3000 }) 4 | wss.on('connection', function (ws){ 5 | ws.on('message', function (data){ 6 | console.log(data) // 接收 7 | ws.send(`你好, 8080,我接收到了${data}`) // 发送 8 | }) 9 | }) -------------------------------------------------------------------------------- /其他/吐个槽/php.md: -------------------------------------------------------------------------------- 1 | ```js 2 | // 变量后头加一个空格,让我深刻怀疑自己整个世界 3 | let arr = this.transferAllXiaoqu.filter(item => item.daqu_id === '1')// 这段话怎么会有错 4 | let arr = this.transferAllXiaoqu.filter(item => item.daqu_id + '' === regin + '')// 这段话怎么会有错 5 | // 最后 item 后面 daqu_id 多了一个空格 "daqu_id " !== "daqu_id" 6 | ``` -------------------------------------------------------------------------------- /面试题/vue/6.reactive ref 区别.md: -------------------------------------------------------------------------------- 1 | # reactive ref 区别 2 | 3 | 都可以为数据添加响应式 4 | 5 | - ref 基础数据类型 6 | - reactive 对象引用数据类型,使其变成响应式的引用类型的值 7 | 8 | reactive 和 ref 都是用来定义响应式数据的 reactive 更推荐去定义复杂的数据类型 ref 更推荐定义基本类型 9 | 10 | ref 和 reactive 本质我们可以简单的理解为 ref 是对 reactive 的二次包装, ref 定义的数据访问的时候要多一个.value 11 | -------------------------------------------------------------------------------- /JS/基础/跨域/nginx/nginx/conf.d/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 8888; 3 | server_name localhost; 4 | location /mystatus { 5 | stub_status; 6 | } 7 | 8 | location / { 9 | root /www/test; 10 | index 1.html; 11 | add_header "Access-Control-Allow-Origin" "*"; 12 | } 13 | } -------------------------------------------------------------------------------- /面试题/手写/22.sleep.js: -------------------------------------------------------------------------------- 1 | function sleep(delay) { 2 | var start = new Date().getTime(); 3 | while (new Date().getTime() - start < delay) { 4 | continue; 5 | } 6 | } 7 | 8 | function test() { 9 | console.log("111"); 10 | sleep(2000); 11 | console.log("222"); 12 | } 13 | 14 | test(); 15 | -------------------------------------------------------------------------------- /面试题/运行题/let.js: -------------------------------------------------------------------------------- 1 | // let 2 | function fn() { 3 | var a = 1; 4 | let b = 2; 5 | { 6 | let b = 3; 7 | var c = 4; 8 | let d = 5; 9 | console.log(a, b, c, d); 10 | } 11 | { 12 | let b = 6; 13 | let d = 7; 14 | console.log(a, b, c, d); 15 | } 16 | } 17 | fn(); 18 | -------------------------------------------------------------------------------- /面试题/练习环境/4.观察者.js: -------------------------------------------------------------------------------- 1 | class Subject {} 2 | 3 | class Observer {} 4 | 5 | const subject = new Subject(); 6 | const a = new Observer(() => { 7 | console.log("a"); 8 | }); 9 | const b = new Observer(() => { 10 | console.log("b"); 11 | }); 12 | subject.add(a); 13 | subject.add(b); 14 | subject.trigger(); 15 | -------------------------------------------------------------------------------- /面试题/运行题/call.js: -------------------------------------------------------------------------------- 1 | var name = "window"; 2 | 3 | var person1 = { 4 | name: "person1", 5 | foo4: function () { 6 | return () => { 7 | console.log(this, "mty"); 8 | console.log(this.name); 9 | }; 10 | }, 11 | }; 12 | 13 | var person2 = { name: "person2" }; 14 | 15 | person1.foo4().call(person2); 16 | -------------------------------------------------------------------------------- /算法/2_排序.md: -------------------------------------------------------------------------------- 1 | ## 排序 2 | 3 | ## 目录 4 | - 一、插入排序 5 | 6 | #### 一、插入排序 7 | > `直接插入排序、折半插入排序和希尔排序` 8 | 9 | 1.1 直接插入排序 10 | 11 | 【算法思想】 12 | (1) 设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列 13 | (2) 循环n-1次,每次使用顺序查找发,查找r[i](i = 2,..n)在已拍好的序列r[1,.i-1]中插入位置,然后将r[i]插入表长为[i-1]的有序序列r[1,i-1], 直到将r[n]插入表长为n-1的有序序列r[1..n-1],最后得到一个表长为n的有序序列 14 | 15 | -------------------------------------------------------------------------------- /面试题/运行题/fn.js: -------------------------------------------------------------------------------- 1 | var i = 20; 2 | function fn() { 3 | // 经过fn()(4)函数的调用,此时i是18 4 | i -= 2; // 17 5 | return function (n) { 6 | // 传入参数5 7 | console.log(++i - n); //18+1-5=14 此时i值是19 // 18 - 4 8 | }; 9 | } 10 | 11 | var f = fn(); 12 | f(1); 13 | f(2); 14 | fn()(3); 15 | fn()(4); 16 | f(5); 17 | console.log(i); 18 | -------------------------------------------------------------------------------- /JS/基础/跨域/name/a2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |