Open Amybiubiu opened 3 years ago
"lint-staged": {
"gatsby-theme-oi-wiki/src/**/*.{js,jsx,ts,tsx}": [
"node_modules/.bin/eslint --fix"
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
const isComplexDataType = obj => (typeof obj === 'object' || typeof obj === 'function') && (obj !== null)
const deepClone = function (obj, hash = new WeakMap()) { if (obj.constructor === Date) return new Date(obj) // 日期对象直接返回一个新的日期对象 if (obj.constructor === RegExp) return new RegExp(obj) //正则对象直接返回一个新的正则对象 //如果循环引用了就用 weakMap 来解决 if (hash.has(obj)) return hash.get(obj) let allDesc = Object.getOwnPropertyDescriptors(obj) // 遍历传入参数所有键的特性 let cloneObj = Object.create(Object.getPrototypeOf(obj), allDesc) //继承原型链 hash.set(obj, cloneObj) for (let key of Reflect.ownKeys(obj)) { cloneObj[key] = (isComplexDataType(obj[key]) && typeof obj[key] !== 'function') ? deepClone(obj[key], hash) : obj[key] } return cloneObj }
// 下面是验证代码 let obj = { num: 0, str: '', boolean: true, unf: undefined, nul: null, obj: { name: '我是一个对象', id: 1 }, arr: [0, 1, 2], func: function () { console.log('我是一个函数') }, date: new Date(0), reg: new RegExp('/我是一个正则/ig'),
};
Object.defineProperty(obj, 'innumerable', { enumerable: false, value: '不可枚举属性' } );
obj = Object.create(obj, Object.getOwnPropertyDescriptors(obj)) obj.loop = obj // 设置loop成循环引用的属性 let cloneObj = deepClone(obj) cloneObj.arr.push(4) console.log('obj', obj) console.log('cloneObj', cloneObj)
- promise 错误处理的实践
- 虚拟内存与 swap 分区。
我怎么能忘记内存与外存呢?操作系统的三级存储结构呢?😓
- linux 命令 lsof -i:8080 ps aux | grep node
- [useEffect](https://overreacted.io/a-complete-guide-to-useeffect/)
美团 餐饮Saas 成都
一面
自我介绍
说一说你常用的 react hooks, 介绍一下 useEffect useEffect 的执行时机 componentDidMount, componentDidUpdated。扯了半天,我说在 useState 里面使用 localStorage 在build 阶段会出错,他说不可能吧。
localStorage 和 sessionStorage。localStorage 与 path、port 相关吗?
强缓存和协商缓存?
cache-control: no-cache 和 no-store ? max-age = 0 与 no-cache?
跨域的方式?cors 的怎么工作的? 提到了 cors 的简单请求与复杂请求,复杂请求的那个预请求的 method 不记得了。
想要跨域携带 cookie 怎么做 ?如何防止 cookie 劫持?cookie 为什么能做身份验证,后端是怎么做的? same-site none ;他说除了这个还有吗?(所以还有啥??)。防 xss 攻击 httpOnly(其实还有 csrf)。猜测根据用户 id 按固定的算法生成一个随机数 cookie,把他和 id 一起存入数据库,后面即可以按照 cookie 查找用户。
Linux 命令用过哪些? 8080 端口运行了哪些任务?如何杀死 node 进程?
知道虚拟内存吗?swap 分区知道吗? 又瞎说了一些(虚拟内存可以从逻辑上扩充物理内存),他说算了算了,看看别的,😭。
看你写了 ES6。说一说 promise 的用法?reject 可以在 then 中被接收吗?try catch 内定义了一个 promise 但没有显示 reject 和 catch 可以被外层的 try...catch 捕获吗? ....你理解的不太对,之后自己去看看。
看你用了 ESLint,如果要在 commit 之前做一些验证,怎么做? package.json pre-commit eslint -某个命令做一下 eslint 检查看是否符合定义规范。
看你写了 TypeScript,TypeScript 了解吗?let a: unknown? a = {b: 1}, let b: typeof a? 只知道 any type。。。
说说数组的API。
手写深拷贝。
反问:业务。