前几天离职了,离职前几天开始物色合适的下家。在疯狂的简历投递之后,陆续接到了几个面试邀请,已经面了四家。这四次面试风格迥异,期间遇到了一些比较有意思的问题,在此整理总结一番。
基本上所有的面试都涉及到自我介绍和前一份工作的项目介绍,这里不做讲解。本文主要是记录面试中遇到的面试题。
部分基础知识
每一次面试都涉及到了前端的一些基础知识,虽然有的问题交叉重复出现,但是基本上都是一些不同角度的面试题。比如:
- gulp中的流程控制,如何控制顺序执行和并行执行?
- gulp与webpack的区别?
- Less如何中实现继承?
- 原生JavaScript如何发送Ajax请求?Ajax请求结果的状态处理(考察XMLHttpRequest的方法)。
不只是简单的XMLHttpRequest对象的使用,包含该对象的其他不太常见的方法。考察对这个对象的了解深度。
- JavaScript数组中常用的一些方法的解释,比如: filter,some,every,map,forEach等
- 说一说JavaScript中的作用域。
- CSS布局的实现:左右固定宽度,中间自适应。
- CSS中实现水平垂直居中的方法。
- 解释CSS选择器的权重。
- 讲一讲你听过的HTTP请求类型;GET和POST的区别。
- HTTP如何处理缓存?
这个问题我根本答不上来。涉及到HTTP Header 中的值。具体的内容可以参考: http://www.alloyteam.com/2012/03/web-cache-2-browser-cache/ https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ
- git的一些操作(rebase等)
开放性问题
-
自我介绍。
-
为什么做前端?
-
讲一讲最近的一份工作主要做了什么。
-
期待加入什么样的公司或者团队?
-
未来的职业规划。
-
React的使用过程中性能优化的尝试。
-
如果解决模块之间的循环依赖?
在回答这个问题的时候,我过于纠结字面的“解决”,试图从编码角度来解决,突然就有点慌了。其实只要讲一下如何避免出现循环依赖即可。比如:模块重新划分,公共的方法变量抽出等。不知是面试官没有表述清楚还是故意为之。
-
如果将你简历中的信息输出到页面上呈现:
-
你会如何设计信息的数据结构?
-
在上一步的基础上如何处理你设计的数据?
-
如何将处理过的数据输出?
-
输出选择HTML标签集合还是字符串?为什么?
这个问题我觉得挺有意思。我觉得实现思路的难度不大,我认为最关键的点在于数据结构的定义,因为这会影响到后续两步的实际编码。具体实现可以参考markdown转成html的实现思路。
-
还有一些问题比较细,比较杂,暂时想起来,想到了再补充。