面试就业 #
@(未归档)[前端, 面试]
[TOC]
1. 面试 #
1.1第一面 #
直接老大面试,不管社招和校招都是这样的
不会问特别详细的具体问题
后面的架构师会问的非常具体 ,问一些宏观的架构问题,是问一些特质。
聊聊天问问做过的项目,综合能力的面试
1.2 第二面 #
技术总监的面试,会难一点
大公司更复杂 一下,小公司第二面就是技术总监
会写一些算法,说一下具体的架构,直接画出架构图
1.3 第三面 #
级别高是CTO,级别低是HR面
CTO和技术总监技术差不多,但压力会大一点,观察 你面对压力的反应
1.4 第四面 #
HR面试,主要是关注性格和做事的方式,关注技术之外的面试
非常重要,对企业是否录取起着非常重要的作用
2. 面试问题 #
2.1 技术基础 #
- JS语言等问题,像库和框架的问题,问项目经验,项目如何开发的,如何分工合作的,在项目中会遇到什么问题,
- 如何 保证开发流程没有问题,基础工具如gitflow.
- 关于项目主要是关注你对这个项目做过哪些思考?在项目中遇到的问题,如何推进的,如果出现团队矛盾难以协调问题如何解决的。开发中遇到的问题如何通过引入一些新的技术来解决的
- 不是关注你做过多少事情 ,而是你做过哪些思考
2.2 什么是优秀的工程师 #
2.2.1 可以持续成长 #
- 包括技术、经验、解决问题能力、管理能力的成长。
- 它通过一些特质来造就,比如好奇心,分析问题和解决问题的方法,做事态度。
- 持续长成的工程师就是优秀的工程师。
- 好奇心就是对技术感兴趣,愿意用它来解决问题。
- 自己做一些小的作品
2.2.2 做事的方式 #
- 做完事后有没有去总结,做完事后有没有去分析,还是直接写代码,直接去切图
- 重复性的工作会不会想办法去做一些工具或组件库去解决这类问题
- 面试的时候会关注自己有没有写笔记和博客,这是一个学习的方式和做项目总结的方式
- 对新技术的关注,有没有关注社区的新技术,关注业界的进展,是否在把时间投入在学习上面,如果你对开源技术有了解和实践经验会更有优势
2.3 技术发展方向 #
- 一开始要打基础,打好基础后去实践,再去学习高端框架。
- 学习框架先看文档,再看文章,一定要去实践,开发完你就入门了,去找一份比较正式的工作
- 工作二年之后会遇到一个瓶颈,思想开发中遇到什么核心问题,要深入底层了原理。另外要关注多人开发时的冲突解决。
- 后来会过度过工程化,四年之后会成为一个架构师的角色。架构师就是做工程化的事情 。
- 架构师主要是解决多人开发,团队协作,开发效率等问题
3. 简历 #
- 简历可以精简
- 列出最近的核心项目,能体现出有竞争力,有价值的项目
- 列出工作经验,强调技能,之前解决过什么问题,个人价值在哪里
- 带过团队,有管理能力。做过多端,前端、移动端、客户端 、服务端等列出来,让人眼前一亮
- GITHUB,做过的网站和APP作品
4. 面试 #
- 面试之前把最近做的重要的事情进行梳理,把能体现自己价值的东西体现出来
- 画架构图,前端和服务器端的架构图,整体的解决方案
- 你要准备几个合适的问题?比如我找工作的角色和岗位责任?要解决什么问题?现在的技术架构?
- 一定要把握主动权,主动去表达自己的的优势和擅长的东西,尽量自己多说
- 如果实在不知道就可以坦诚一点,但要突出好学,而且再抛出你擅长的话题
- 每一轮面试官面试的问题和关注的点不太一样,提前准备的时候要提前有针对性的准备。
- 第一轮关注综合能力,这时要讲你的项目经验和技术广度
- 第二轮会问算法和架构思路和非常详细的技术点,要有针对性的准备
- 第三轮 HR要准备对应对的话术,比如对加班事情如何看的?还有什么要问的问题吗?
5. 问题 #
5.1 项目经验如何体现? #
- 平时做项目的时候要仔细思考,要有积累,有沉淀。 比如用VUE碰到了什么坑?遇到过什么项目问题,有总结和下一步计划。是如何改进的你的工作流程和效率的。一定要编写对项目的思考
- 中面一般会问比较宏观的问题,问你做事的态度和价值观,要表现的非常乐观,积级解决问题。加班的问题,工资的问题。
5.2 觉得能力不差但过不了面试为什么? #
5.3 问算法 #
是问思路和基础
5.4 不好简历直接PASS #
- 首先看学历,学历不好的话看别的,学历好加分
- 看之前工作过的公司,如果公司出名加分
- 看表达上面能不能表现出他的价值和能解决的问题,只罗列出公司和项目PASS
- 简历里要体现出比较特殊的信息,面试员为什么要关注我?是技术全面?参与开源社区?了解技术多?带过团队?擅长总结?
5.5 实习生没有项目经验如何表达 #
- 最重要的还是基础
- 没有项目经验可以看社区文章,了解关注的话题,有理论基础
- 自己找一些实践的机会,给学校做的APP或网站,好玩的插件,自己的博客
6. 考题 #
###6.1 JS
- 正则表达式
- 闭包和作用域 for setTimeout
- 递归遍历 如何判断对象是数组
- 如何变换对象和变量和作用域
- 观察对新技术的了解?如ES6
6.2 CSS #
- 盒模型
- 写动画
- 清除浮动的方式
- 多列布局的方式,是否知道flexbox
-
6.3 其它 #
- HTTP 网络协议
- 从输入url发生了什么事情
- 客户端里嵌套H5,如何通信,底层如何实现的
- 跨域 ajax iframe
- mvvm是怎样的一个分层
- 平均工作时就要考虑如何把一个事情做成可以说的事情
6.4 水平分级 #
- 初级 指基础没有问题 ,做项目没有问题,能独立 开始做项目
- 高级 要求做比较复杂的项目,带二三个人做项目并带他们成长,能够沉淀组件和构建等
- 架构师 可以带十几二十几个人,可以协调团队发展。
7. 面试题 #
7.1 HTML&CSS #
- 一个div,宽度是100px,此时设置padding是20px,添加一个什么css属性可以让div的实际宽度仍然保持在100px,而不是140px?
- 清除浮动的方式,提供尽可能多的方案。
- 如何让两个div分别以40%和60%的比例排在一行内,提供尽可能多的方案。
- 如何用css实现一个div的一秒内向右平滑移动100px的动画 .
- localStorage,sessionStorage,Cookie的区别和用途。
7.2 正则题 #
var string = "我的账户余额:2,235,467.20";
console.log(?);
// 请用js计算出我到底有多少钱(输出Number类型数字,代码尽量简洁,考虑通用情况)
3.作用域
function person() {
return this.name;
}
var someOne = {
name: 'Jenny',
age: 18
};
// 此处如何输出 'Jenny'
7.3 语法题 有一个合法的 JSON 对象(即不包含函数等值的对象),设计一个函数,取出该对象内所有 key 为 "id" 并且其值不为对象、数组的值,装入一个数组并返回。 #
function extractIds(data) {
}
样例数据:
var data = {
id: 1,
items: [
{ id: 2 },
{ item: 3, id: [
{ id: 4 },
{ id: 5 }
]}
]
};
extractIds(data);
7.4 闭包 下面五段代码分别输出什么?并且什么时候输出什么? #
for(var i = 0; i < 5; i++) {
console.log(i);
}
for(var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000 * i);
}
for(var i = 0; i < 5; i++) {
(function(i) {
setTimeout(function() {
console.log(i);
}, i * 1000);
})(i);
}
for(var i = 0; i < 5; i++) {
(function() {
setTimeout(function() {
console.log(i);
}, i * 1000);
})(i);
}
for(var i = 0; i < 5; i++) {
setTimeout((function(i) {
console.log(i);
})(i), i * 1000);
}
7.5 创建一个二进制相加函数,根据传入的两个二进制数字符串返回一个相加的十进制的结果。 #
function calculate(num1, num2){
}
结果样例:
calculate("10", "10")
calculate("10", "0")
calculate("101", "10")
参考 链接 #
http://naotu.baidu.com/file/8b70b0b099a76a8cb4b99a6b2e456d60?token=bdce82938654c44b
https://zhuanlan.zhihu.com/p/21707924
http://www.html-js.com/article/Large-search-front-team-column%202961