面试有几点需注意:(来源程劭非老师 github:@wintercn)
面试题目:根据你的等级和职位变化,入门级到专家级:广度↑、深度↑。
题目类型:技术视野、项目细节、理论知识,算法,开放性题,工作案例。
细节追问:可以确保问到你开始不懂或面试官开始不懂为止,这样可以大大延展题目的区分度和深度,知道你的实际能力。因为这种关联知识是长时期的学习,绝对不是临时记得住的。
回答问题再棒,面试官(可能是你面试职位的直接领导),会考虑我要不要这个人做我的同事?所以态度很重要。(感觉更像是相亲)
资深的工程师能把absolute和relative弄混,这样的人不要也罢,因为团队需要的是:你这个人具有可以依靠的才能(靠谱)。
前端开发面试知识点大纲:
HTML & CSS:
对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端
JavaScript:
数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。
其他:
HTTP、WEB安全、正则、优化、重构、响应式、团队协作、可维护、SEO、UED、架构、职业生涯
作为一名前端工程师, 无论工作年头长短都应该必须掌握的知识点 :
1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
2、DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。
3、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。
4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。
5、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。
6、盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型
7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们
8、浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
9、HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
10、JSON —— 作用、用途、设计结构。
根据自己需要选择性阅读,面试题是对理论知识的总结,让自己学会应该如何表达。
资料答案不够正确和全面, 欢迎补充 答案、题目。
HTML
Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
行内元素有哪些?块级元素有哪些?空(void)元素有那些?
介绍一下CSS的盒子模型?
link 和@import 的区别是?
CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算?CSS3新增伪类有那些?
如何居中div?如何居中一个浮动元素?
浏览器的内核分别是什么?
html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
语义化的理解?
HTML5的离线储存?
(写)描述一段语义的html代码吧。
iframe有那些缺点?
Label的作用是什么?是怎么用的?(加 for)
HTML5的form如何关闭自动完成功能?给不想要提示的input是设置autocomplete=off即可
请描述一下 cookies,sessionStorage 和 localStorage 的区别?
如何实现浏览器内多个标签页之间的通信? (阿里)
webSocket如何兼容低浏览器?(阿里)
页面可见性(Page Visibility)API 可以有哪些用途?
你是怎么切图的?
CSS
列出display的值,说明他们的作用。position的值, relative和absolute定位原点是?有没有用过position: sticky,有什么效果?
CSS3有哪些新特性?
用纯 CSS 创建一个三角形
一个满屏 品 字布局 如何设计?
经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
为什么要初始化CSS样式。
absolute的containing block计算方式跟正常流有什么不同?
CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
对BFC规范的理解?
css定义的权重?
解释下浮动和它的工作原理?清除浮动的技巧
用过媒体查询,针对移动端的布局吗?
使用 CSS 预处理器吗?喜欢那个?
CSS 优化、提高性能的方法有哪些?
浏览器是怎样解析CSS选择器的?
这个CSS它是如何工作的?( .mod-nav h3 span {font-size: 16px;} )
在网页中的应该使用奇数还是偶数的字体?为什么呢?
margin和padding分别适合什么场景使用?
元素竖向的百分比设定是相对于容器的宽度吗?
全屏滚动的原理是什么?用到了CSS的那些属性?
::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素。
你对line-height是如何理解的?
设置元素浮动后,改元素的display值是多少?(自动变成display:block)
怎么让Chrome支持小于12px 的文字?
让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
font-style属性 可以让它赋值为“oblique” oblique是什么意思?
position:fixed; 在android下无效怎么处理?
如果需要手动写动画,你认为最小时间间隔是多久,为什么?
display: inline-block 什么时候会显示间隙?
JavaScript
用原生JS的写过东西吗?
JavaScript原型,原型链 ? 有什么特点?
JavaScript有几种类型值?(堆:原始值 栈:引用值),你能画一下他们的内存图吗?
eval是做什么的?
null,undefined 的区别?
写一个通用的事件侦听器函数。
Node.js的适用场景?
介绍js的基本数据类型。
Javascript如何实现继承?
["1", "2", "3"].map(parseInt) 答案是多少?
如何创建一个对象? (画出此对象的内存图)
谈谈This对象的理解。
事件、IE与火狐的事件机制有什么区别?如何阻止冒泡?
什么是闭包(closure),为什么要用它?
"use strict";是什么意思 ? 使用它的好处和坏处分别是什么?
如何判断一个对象是否属于某个类?
new操作符具体干了什么呢?
Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
对 JSON 了解多少?
[].forEach.call($$(" "),function(a){ a.style.outline="1px solid #"+(~~(Math.random()(1<<24))).toString(16) }) 能解释一下这段代码的意思吗?
js延迟加载的方式有哪些?
ajax 是什么?
同步和异步的区别?
如何解决跨域问题?
模块化怎么做?
AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
异步加载的方式有哪些?
什么是Promise,原理是怎样的? Promise优缺点?Promise的方法有哪些?作用都是什么?
.call() 和 .apply() 的区别?
JQuery的源码看过吗?能不能简单说一下它的实现原理?
JavaScript中的作用域与变量声明提升?
如何编写高性能的Javascript?
那些操作会造成内存泄漏?
JQuery一个对象可以同时绑定多个事件,这是如何实现的?
写一个无刷新的网站,并且能在浏览器前进、后退时正确响应怎么实现?
如何判断当前脚本运行在浏览器还是node环境中?(阿里)
canvas的默认大小是多少?
移动端最小触控区域是多大?
jQuery 的 slideUp动画 ,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
移动端的点击事件的有延迟,时间是多久,为什么会有?怎么解决?(click 有 300ms 延迟,为了实现safari的双击事件的设计)
Zepto的点透问题如何解决?
随机生成指定范围内的随机数
其他问题
你遇到过比较难的技术问题是?你是如何解决的?
常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
页面重构怎么操作?
列举IE 与其他浏览器不一样的特性?
99%的网站都需要被重构是那本书上写的?
什么叫优雅降级和渐进增强?
WEB应用从服务器主动推送Data到客户端有那些方式?
对Node的优点和缺点提出了自己的看法?
你有哪些性能优化的方法?
http状态码有那些?分别代表是什么意思?
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
你常用的开发工具是什么,为什么?
对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
你怎么看待Web App 、hybrid App、Native App?
你移动端前端开发的理解?(和 Web 前端开发的主要区别是什么?)
加班的看法?
平时如何管理你的项目?
git如何删除错误提交的文件?
如何设计突发大规模并发架构?
说说最近最流行的一些东西吧?平时常去哪些网站?
移动端(Android IOS)怎么做好用户体验?
你在现在的团队处于什么样的角色,起到了什么明显的作用?
你认为怎样才是全端工程师(Full Stack developer)?
介绍一个你最得意的作品吧?
你有自己的技术博客吗,常去那些技术博客?
最近在学什么?能谈谈你未来3,5年给自己的规划吗?
框架相关问题
React
React 生命周期函数
React中虚拟DOM是什么?虚拟DOM的diff算法是怎样的?
为什么虚拟 dom 会提高性能?
React 中 keys 的作用是什么?
shouldComponentUpdate 是做什么的?
类组件(Class component)和函数式组件(Functional component)之间有何不同?
展示组件(Presentational component)和容器组件(Container component)之间有何不同?
(组件的)状态(state)和属性(props)之间有何不同
什么是受控组件(controlled component)?
什么是高阶组件(higher order component)?
为什么建议传递给 setState 的参数是一个 callback 而不是一个对象?
除了在构造函数中绑定 this,还有其它方式吗?
(在构造函数中)调用 super(props) 的目的是什么?
(在构造函数中)调用 super(props) 的目的是什么?
react 组件的划分业务组件技术组件?
了解 redux 么,说一下 redux 吧
了解redux-saga吗?有没有相关开发经验,redux-observable呢?
Vue
vue中的MVVM模式
v-show指令,v-if的区别
v-show指令,v-if的区别
如何让css只在当前组件中起作用
指令keep-alive起什么作用的
Vuejs组件之前如何通信的?有哪些通信方式?
VueJS 有哪些优秀的特性?核心原理能简述一下吗?
vue 的双向绑定的原理是什么?
Vue.js 和 AngularJS 之间的区别是什么?
Vue.js 和 React.js 有什么区别?
请详细说下你对 Vue 生命周期的理解?
vuex 的mutation和action的特性是什么?有什么区别?
写 React / Vue 项目时为什么要在组件中写 key,其作用是什么?
computed 和 watched 的区别是什么?什么时候用computed?什么时候用watched?
小程序相关问题
请谈谈微信小程序主要目录和文件的作用?
请谈谈wxml与标准的html的异同?
请谈谈WXSS和CSS的异同?
小程序是如何适配各种移动设备的?原理是什么?
你是怎么封装微信小程序的数据请求的?
小程序页面间有哪些传递数据的方法?
请谈谈小程序的双向绑定和vue的异同?
请谈谈小程序的生命周期函数?
简述微信小程序原理?
请谈谈原生开发小程序、wepy、mpvue 的对比?
编程题
1. 石子合并
时间限制:(每个case)2s 空间限制:128MB
小Q和牛博士在玩一个石子合并的游戏,初始一共有n堆石子,每堆石子有w[i]个石子。小Q和牛博士他们需要对石子堆进行合并,每次他们可以任意选择两堆石子进行合并。一堆有x个石子的石子堆和一堆有y个石子的石子堆合并将得到一堆x+y个石子的石子堆,这次合并得分为x*y,当只剩下一堆石子的时候游戏结束。
小Q和牛博士希望采取优秀的策略获得最大得分,希望你能来帮他们算算最大得分多少。
输入:
输入包括两行,第一行一个正整数n(2<=n<=100)。
第二行包括n个正整数w[i](1<=w[i]<=100),即每堆石子的个数。
输出:
输出一个正整数,即小Q和牛博士最大得分是多少。
样例输入:3
1 2 3
样例输出:11
2. 小Q的排序
时间限制:(每个case)2s 空间限制:128MB
小Q在学习许多排序算法之后灵机一动决定自己发明一种排序算法,小Q希望能将n个不同的数排序为升序。小Q发明的排序算法在每轮允许两种操作:
1、 将当前序列中前n-1个数排为升序
2、 将当前序列中后n-1个数排为升序
小Q可以任意次使用上述两种操作,小Q现在想考考你最少需要几次上述操作可以让序列变为升序。
输入:
输入包括两行,第一行包括一个正整数n(3<=n<=10^5),表示数字的个数
第二行包括n个正整数a[i](1<=a[i]<=10^9),即需要排序的数字,保证数字各不相同。
输出:
输出一个正整数,表示最少需要的操作次数
样例输入:6
4 3 1 6 2 5
样例输出:2
3. 射击训练
时间限制:(每个case)2s 空间限制:128MB
小Q是一个专业的射击运动员,有一天他像往常一样进行n次射击训练,每次设计他都会有一个得分w[i](1<=i<=n)。小Q之前训练都会取最高的四次得分作为最终得分来衡量他的射击状态,但是今天他制定了一个奇怪的规则:
在n次射击得分中取出四次得分a,b,c,d,并且满足a*b*c=d作为最终得分来衡量他的射击状态。
但是小Q发现满足这个条件的(a,b,c,d)可能不止一个,小Q需要你来帮助他计算一共有多少个这种(a,b,c,d)(注意a,b,c,d的相对顺序不能改变)。
如样例所示:
有两种满足的(a,b,c,d),分别是(10,2,2,40)和(2,2,40,160)。
输入:
输入包括两行,第一行包括一个正整数n(4<=n<=500),表示射击的次数。
第二行n个正整数w[i](1<=w[i]<=10^6),表示每次射击的得分。
输出:
输出可以作为最终得分的种数。
样例输入:6
10 2 2 7 40 160
样例输出:2
有趣的问题
.A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在 箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?
答案:A把药放进箱子,用自己的锁把箱子锁上。B拿到箱子后,再在箱子上加一把自己的锁。箱子运回A后,A取下自己的锁。箱子再运到B手中时,B取下自己的锁,获得药物。
放松一下
欢迎关注前端开发攻城狮
?