一直想把前段时间的面试题好好总结记录下来,之前都是零零碎碎的,但总是为自己找了各种理由各种借口。一直没能很好地付出实践,今儿必须要弄出来的了。不能老是让种子发芽而不去照顾,那样会乱长成了杂草了。
面试题
webpack
- 优化
- 生产跟开发分为不同的配置项
- 使用
css
插件,将css从js提炼到css
文件下,同时进行压缩 - 生产环境取消
devtool
,避免可以看到源码
JavaScript的一些技术
- 预加载/懒加载
- null/undefined 的区别
- 数组,哪些修改原数组
- 攻击xss
- 跨域
- 回调地狱
- 设计模式
- 单例模式 实现私有属性,原理通过拦截禁止访问
- 堆栈
- 前端缓存用过哪些
- 如何渲染大型数据
- ts 泛型
- mvvm
vue
- 虚拟DOM
- 性能优化
- nextTick原理
- AST抽象语法树
- data为何是函数
- 实现双向数据绑定机制
- 如果不使用 vue 大型项目如何形成现有的模式,数据路由如何处理
算法
- 二分法
- 求一个数字不能被整除后的所有被除数的集合
/** * @description: 将传入的数字进行整除到不能有小数位置,并返回被整除的所有数据的数组 * @param {number} num 正整数 * @return: number[] */ function calc(num) { // 执行的范围在 2 ~ num 之间 let number = num const list = [] for (let i = 2; i < num; i++) { // 此时可以退出 if (number < i) break if (number % i === 0) { number = number / i list.push(i) i = 1 } } return list }
进公司后的状态
虽然进了一家号称几千人的上市公司,前端上百人。但这些其实与个人并没有直接关系,学习的依旧学习,不学习的依旧不学习。而且业务压身,会被迫更专于业务,而无法实时有效地进行学习。这点怕是短期内无法得到解决了。
经过两个月的磨练,也在这说点自己的心得吧
- 不管身在何处,都应该保持好奇心,都应该让自己的思想付出实践。比我之所以能进入这家公司,正是因为我在上家公司,强迫自己把经常用到的组件业务进行封装,而这是自主地,不在公司的需求内。但这成为了销售自己的一个亮点。正好进入这家公司,一来也是主要负责搭出框架等,虽不完善,但好歹有了结果
- 前端不应该只在乎自己的一亩三分地,对前端的代码上线等前后都应该有所了解,比如接口第一次走数据库,后来的有可能走的是Redis,跨域可以通过Nginx代理,等等。这些可以让你在跟后台撕逼时有了本钱,不然相当被动
- 主动再主动,不能被动地等,特别是需求不明确时,要一而再再而三地追问
- 备注,文档涉及到与其他交互时,这些最好明确清楚
- 要求自己,不管公司有没有要求,对自己的要求不能降低,eslint,代码规范都要自我约束
- 积极汲取新公司的知识,不懂就问,不管是新老员工,以结果为导向,不用担心让他人贬低,其实这是一个双向的过程,你可以快速了解你的同事的功力如何,虽然也要承担一定的风险