A. 前端面试常见问题——Web篇
1、IE浏览器内核:Trident内核,也是俗称的IE内核;
2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;
3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;
4、Safari浏览器内核:Webkit内核;
5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;
6、360浏览器、猎豹浏览器内核:IE+Chrome双内核;
7、搜狗、遨游、QQ浏览器内核: Trident(兼容模式)+Webkit(高速模式)﹔
8、网络浏览器、世界之窗内核:IE内核;
9、2345浏览器内核:以前是IE内核,现在也是IE+Chrome双内核;
把不同路由对应的不同内容掌握在前端,如vue中的vue-router、react的ReactRouter等。出现在单页面应用中,页面中公共部分不变,只改变部分内容的使用。路由切换时根据不同的路由动态加载不同的组件,不刷新页面。
优点 :实现前后端的分离,缓解服务器压力,不需要每次从服务器获取,快速展现给用户,用户体验更好。
见于多页面应用中。每次都向后台服务器发出请求,服务器响应请求,在后台拼接html文件传给前端显示, 返回不同的页面,浏览器会刷新页面。
B. 前端面试会提问到哪些
在面试前端的过程中,有些问题是经常会被提问到的
一、基础篇
1. 在不使用第三个变量的情况下,如何调换a与b的值?
2. px与em的区别
3. 简述一下盒模型
4. 页面导入样式时,使用link和@import有什么区别?
5. 简述一下事件代理
二、HTML常见题目
01、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
02、HTML5为什么只需要写?
03、行内元素有哪些?块级元素有哪些?空(void)元素有哪些?
04、页面导入样式时,使用link和@import有什么区别?
05、介绍一下你对浏览器内核的理解?
06、常见的浏览器内核有哪些?
07、html5有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?
08、如何区分HTML和HTML5?
09、简述一下你对HTML语义化的理解?
10、HTML5的离线储存怎么使用,工作原理能不能解释一下?
三、CSS类的题目
01、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?
02、CSS选择符有哪些?哪些属性可以继承?
03、CSS优先级算法如何计算?
04、CSS3新增伪类有哪些?
05、如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
06、display有哪些值?说明他们的作用。
07、position的值relative和absolute定位原点是?
08、CSS3有哪些新特性?
09、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?
四、JavaScript类的题目
01、JavaScript中this是如何工作的
02、请解释原型继承的原理。
03、什么是闭包(closure),如何使用它,为什么要使用它?
04、.call 和.apply的区别是什么?
05、请指出JavaScript 宿主对象(host objects) 和原生对象(native objects) 的区别?
06、请指出以下代码的区别:function Person(){}、var person = Person()、var person = new Person()?
07、请解释变量声明提升(hoisting)。
08、什么是 “use strict”; ? 使用它的好处和坏处分别是什么?
09、什么是事件循环 (event loop)?
10、请解释同步 (synchronous) 和异步 (asynchronous) 函数的区别。
五、开发及性能优化类题目
01、如何规避javascript多人开发函数重名问题?
02、请说出三种减低页面加载时间的方法.
03、说说你所了解到的Web攻击技术。
04、说说你说了解的前端性能优化方法?
05、前端开发中,如何优化图像?图像格式的区别?
06、浏览器是如何渲染页面的?
07、页面重构怎么操作?
08、什么叫优雅降级和渐进增强?
09、前端需要注意哪些SEO?如何做SEO优化?
10、平时如何管理你的项目?
C. 前端面试一般问什么
web前端面试会问人事方面的内容和web前端技术的内容;
人事的面试
web前端人事面试方面,需要注意如何自我介绍、性格有哪些优劣势、职业规划方向是什么、你的特长是什么、对于加班之类你是怎么看待等人事面试内容;
web前端技术的面试
技术面试,需要注意HTML+CSS+JavaScript以及JS主流框架的使用,比如Vue、React等,前端相关技术,比如tcp握手协议、网络安全、后端技术等;
对于web前端面试准备,建议你去看“决胜前端”(min app),它里面包含了很多web前端技术面试、人事面试等面试真题,而且针对面试题做了详细的分析与解答。
我给你截图看一下例子吧
D. 前端面试官常问的问题有哪些
1、重绘和重排的关系:
重绘不会引起重排,但重排一定会引起重绘,一个元素的重排通常会带来一系列的反应,甚至触发整个文档的重排和重绘,性能代价是高昂的。
2、重绘的概念:
重绘是一个元素外观的改变所触发的浏览器行为,例如改变visibility、outline、背景色等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。由于浏览器的流布局,对渲染树的计算通常只需要遍历一次就可以完成。
但table及其内部元素除外,它可能需要多次计算才能确定好其在渲染树中节点的属性值,比同等元素要多花两倍时间,这就是我们尽量避免使用table布局页面的原因之一。
3、触发重排的情况:
页面渲染初始化时;浏览器窗口改变尺寸;元素尺寸改变时;元素位置改变时;元素内容改变时;添加或删除可见的DOM元素时。
4、rex的缺点:
(1)一个组件所需要的数据,必须_父组件传过来,而不能像flux中直接从store取。
(2)当一个组件相关数据更新_,即使父组件不需要用到这个组件,父组件还是会重新render,可能会有效率影响,或者需要写复杂的shouldComponentUpdate进行判断。
5、对MVC和MVVM的理解:
(1)mvc:View传送指令到Controller Controller完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈所有通信都是单向的。Angular它采用双向绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然。组成部分Model、View、ViewModel
(2)View:UI界面ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;Model:数据访问层。
E. 你遇到的前端面试题都有什么
大家好,我是王我。
随着春节的结束,各个行业也普遍开始了上班的节奏, 不过本人17号才上班。为什么?因为长得帅的都上班比较晚。 当然,每到新年结束,又迎来了一批招聘者与面试者,我来说说作为一年工作经验应该知道的面试题。
HTML篇
1.doctype是什么?有哪些类型?
2.input有哪些新类型?简要说明其8用法。
3.HTML5有哪些新特性,移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
4.bootstrap响应式的原理是什么?
5.多移动终端页面适配是如何实现的?
CSS篇
1.如何实现两列布局,左边自适应,右边固定宽度?
2.用CSS画一个三角形
3.CSS实现字体大写
4.display有哪些常用的属性值?分别是什么意思?
5.position为absolute,relative,fixed的定点位置
6.用三种方法清除浮动
7.请介绍一下margin塌陷问题
js篇
1.什么是事件冒泡和捕获?如何阻止事件冒泡?(分别用原生和jquery实现)
2.js创建对象,至少使用三种方法
3.简述一下事件穿透以及解决办法
4.用三种方式判断变量类型是否是数组
5.如何实现对象的拷贝?
6.什么是闭包?闭包的优缺点。
7.简述一下ajax请求的过程。
8.简述一下new一个人构造函数的人过程。
9.为什么会有跨域?是怎么解决跨域问题的?简述一下原理。
10.js原始数据类型有哪些?
11.学一个函数,判断一个变量是否是字符串
12.typeof有哪些结果?
13.剪头函数和普通函数有什么区别?
14.请用三种方法实现数组去重
15.href和src有什么区别?
jquery篇
1.attr()和prop()有什么区别?
2.on和bind有什么区别?js动态添加的dom元素是通过on还是bind?
3.touch和click有什么区别?
4.window.onload和jquery的ready有什么区别?
vue篇
1.简述一下vue的生命周期及其特点
2.vue双向绑定的原理是什么?
3.vue的特点有哪些?和jquery有什么区别?
4.父子组件之间传递数据的方法
5.子组件如何共享数据?
6.一般有什么工具进行数据交互?
7.webpack的原理是什么?
8.简述一下$nextTick的用法
浏览器篇
1.cookie、sessionStorage、localStorage的区别是什么?
2.有用过浏览器缓存吗?简述一下基本的缓存机制
网络篇
1.http和https之间的区别
2.从服务器的安全考虑,是使用get请求还是post请求?
3.URL请求的过程有哪些?
项目经验篇
1.项目中遇到的最大挑战以及解决办法
2.常见的网页优化有哪些?
作为一个面试一年以内工作经验的前端程序员来说,以上的问题能够倒答如流月薪6k应该不成问题啦。这些面试题也是我在很多面试中感觉经常被问到的题目。
希望大家年后找工作能够顺顺利利, 千万不要跟我一样哦,只有帅气就一无所有了。
大家好,我是王我,中国最帅的前端程序员。
前几次都是各种培训公司,各种忽悠就不提了,说说后面4次面试的经历。
第一次是面一个小公司,不过他们好像没有厉害的前端,来面我的是个后端,一来没有问我关于js的知识,直接问我以前做过什么,有没有经验,我本人不会吹牛,简历也没怎么包装,就是自己把自学的知识和做的几个小demo弄在上面,也用github挂在页面上了,不过他根本不点开看,也不问,问我会不会vue,我当时对框架还不了解,他就说他们需要能直接上手开始写的,所以我第一个就直接挂了。
第二次面试是一个国企,这个问了很多问题,都很基础,js数据类型,数组操作,事件,大概就是高程的前面几章看看就差不多都能答到,然后因为他们主要用jq,所以问了很多jq的操作,关于节点的,动画的,我看锋利的jq大概看了3遍,也练过多次,所以我答的很熟。然后问了些布局方面的,bootstrap我了解过,又看过css3,所以这方面也没啥问题,最后在现场做了个题目,主要就是布局然后通过ajax呈现数据。后面听介绍我面试的说面试官比较满意,说我jq很熟,一面就过了。可惜后面电话面试不知怎么回事可能表现的不够自信,虽然没问技术,但是我没啥自信,把没项目经验什么的也不知怎么就一五一十交代了,估计因为这个挂掉了。
第三次没问问题,直接就是一套题开做,我在那做了一个多小时。题目就是按照要求一步一步做一个页面出来,我也搞忘了我当时卡在哪个地方了,坐在那得时候就是做不出来,没有设计图,要根据他的描述自己找个设计图然后做,我第一次遇到这个有点懵,虽然当时没做出来,不过回来我自己花了几个小时把它做了。所以这个也是凉了。
第四个问的比较多,数据类型,数组操作,跨域,ajax,闭包,原型链,继承,深拷贝,浅拷贝,模块amd cmd,基本都是问的js。然后问了html5的新特性 css3 的新特性,遇到过什么浏览器的兼容性问题,怎么解决的,以后想往什么方面发展。这个时候我已经会点vue了,照着做了个小demo,不过后来知道公司用的angularjs,面试官也没看我做的,问也没问。。以前听网上说要带上自己的项目去面试感觉没起多大效果。
最后总结下如果面的比较初级的岗位,应该主要问js,原型链,继承,闭包,深浅拷贝,ajax,跨域,然后js的基础知识,对了还有apply和call也问了,html5的新特性了解下就行。主要就是看你js掌握的程度,如果稍微要求高一点的,暂时还没面过,等以后面过在来回答
1. cookie session 的用途和区别,以及有效期
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
2. vue的数据绑定原理,mvvm与mvc的区别
MVVM:
m:model数据模型层 v:view视图层 vm:ViewModel
vue中采用的是mvvm模式,这是从mvc衍生过来的
MVVM让视图与viewmodel直接的关系特别的紧密,就是为了解决mvc反馈不及时的问题
图片说明一下:
说到MVVM就要说一下双向绑定和数据劫持的原理,
MVC:
m:model数据模型层 v:view视图层 c:controller控制器
原理: c层需要控制model层的数据在view层进行显示
MVC两种方式,图片说明:
总结:
mvvm与mvc最大的区别:
MVVM实现了view与model的自动同步,也就是model属性改变的时候, 我们不需要再自己手动操作dom元素去改变view的显示,而是改变属性后该属性对应的view层会自动改变。
不懂得可以复制链接查看:
https://www.pianshen.com/article/3716256399/
3. storage 的区别 sessionStorage localStorage
localStorage 的生命周期是永久性的。假若使用localStorage存储数据,即使关闭浏览器,也不会让数据消失,除非主动的去删除数据,使用的方法如上所示。localStorage有length属性
sessionStorage 的生命周期是在浏览器关闭前。也就是说,在整个浏览器未关闭前,其数据一直都是存在的。sessionStorage也有length属性,其基本的判断和使用方法和localStorage的使用是一致的
有一个文本框 通过v-bind绑定了value属性 值为myname 是我们在vue实例中定义的属性
传统我们获取文本框值方法 可能通过getElementById找到文本框 然后获取其value属性
但是vue中直接通过v-bind绑定了value属性 所以不需要像之前那样获取值
所以在后面的按钮中获取name值 直接获取vue实例对象data里面的myname属性即可
【数据为尊 ----数据映射到浏览器 如果数据v-model后修改(肯定input)然后到数据在有数据映射到浏览器页面 ----映射关系统称】
缓存路由组件
使用的是vue的一个组件,参考vue的官方文档
使用这个东西可以保证我们在切换组件的时候,原来显示的组件不被销毁
-----【保障组件的数据不会被切换路由而销毁数据】
Home是对应的组件对象的名字,不是路由的名字
6.多维数组拍平
数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组
一红六种方法吧……
了解的请看: https://www.cnblogs.com/guan-shan/p/10165737.html
7.跨域的原因 解决方案
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。
这样就可以说同源策略----协议---端口---域名
原生的src和href可以解决跨域
代理可以解决
请求头也可以携带浏览器提示的也可以解决
一般都是后端解决跨域问题
【别的需要了解看下方链接】
https://blog.csdn.net/qq_41604383/article/details/100770100
8.uniApp兼容问题§ 如果你使用cli创建项目(即项目根目录是package.json),不管用什么ide,即便是用HBuilderX,切记cli项目的编译器是在项目下的,HBuilderX不管怎么升级都不会影响编译器版本。你需要手动npm update来升级编译器。以及如果你想要安装less、scss等预编译器,也需要自己npm安装在项目下,而不是在HBuilderX的插件管理里安装。
§ 如果你使用离线打包,请注意HBuilderX升级后,真机运行基座和云打包对应引擎跟随HBuilderX升级,而你的sdk需要手动升级。sdk的版本升级一般滞后HBuilderX正式版升级一两天。
§ 如果你使用自定义基座,之前制作的自定义基座是不会跟随HBuilderX升级的,升级HBuilderX后你应该重新制作新版自定义基座。
§ 如果你使用wgt升级,新版HBuilderX编译的wgt,运行到之前的runtime上,一定要先测试好,看有没有兼容性问题。如果有问题,就不要wgt升级,整包升级。
§ 考虑到向下兼容,uni-app编译器在升级为新的自定义组件模式后,同时保留了对老编译模式的向下兼容。
在HBuilderX alpha版中,App端一定会使用新编译器,不理会manifest配置。
在HBuilderX 正式版中,新创建的项目会使用新编译器,老项目不会强制使用,而是开发者自己在manifest里配置开启。
§ 如果你使用其他ide开发uni-app,会经常因为拼错单词而运行失败,因为经过webpack编译一道,很多错误反应的不够直观,排错时间很长,不如从开始就依赖有良好提示的HBuilderX,避免敲错单词。
§ 云打包的引擎版本说明
HBuilderX Alpha,只有1套云打包机,不管你的HBuilderX alpha版本多少,对应的打包机一定是最新的alpha版的客户端引擎。
HBuilderX正式版,有2套打包机,一个是最新正式版,一个是次新正式版。
中间的紧急更新版本没有独立打包机。
举个例子:
HBuilderX 有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1这几个正式版。
那么当前可用的打包机有1.9.1和1.8.2这2台。(即每个大版本的最后一个版本)
除了这2个HBuilderX版本外,其他版本的云打包都指向最新的1.9.1版对应的打包机。(即只保留2个大版本的云打包机)
【详情请看】
https://ask.dcloud.net.cn/article/35845
一、HTML
HTML书写规范
H5新增标签
HTML渲染过程
二、CSS
css盒子模型概念
css弹性布局概念
三、JavaScript
事件模型
DOM2级事件模型
闭包
原型链
四、移动Web开发
常见的布局方案
移动端前端常见的触摸相关事件touch、tap、swipe等整理
移动端前端手势事件
移动端页面渲染优化
GPU渲染
GPU核心渲染过程
五、调试
常用的调试工具
Chrome控制台调试js使用
移动端测试
六、HTTP网络知识
常见的HTTP状态码
不同请求类型的区别
WEB缓存方案
——————————
牛客网(www.nowcoder.com)
- 专业IT笔试面试备考平台
- 最全C++JAVA前端等互联网技术求职题库
- 全面提升IT编程能力
- 程序员交友圣地
分享了一些Web前端的面试题,限时一小时,你看看自己能够答出多少道!
放心,这些面试题都是一些非常基础的知识,只要你在平时认真听课、学习了,那么这些面试题肯定不会难道你。
建议:虽然没有人监督你,但还是希望你不要去寻找答案,脱离网络,拿起纸笔,你试一下自己究竟能够答出个什么水平!有没有真本领?答案尽在这些面试题里!那么,你准备好了吗?OK!计时开始!
一、HTML常见题目01、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
02、HTML5为什么只需要写?
03、行内元素有哪些?块级元素有哪些?空(void)元素有那些?
04、页面导入样式时,使用link和@import有什么区别?
05、介绍一下你对浏览器内核的理解?
06、常见的浏览器内核有哪些?
07、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?
08、如何区分HTML和HTML5?
09、简述一下你对HTML语义化的理解?
10、HTML5的离线储存怎么使用,工作原理能不能解释一下?
二、CSS类的题目01、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?
02、CSS选择符有哪些?哪些属性可以继承?
03、CSS优先级算法如何计算?
04、CSS3新增伪类有那些?
05、如何居中p?如何居中一个浮动元素?如何让绝对定位的p居中?
06、display有哪些值?说明他们的作用。
07、position的值relative和absolute定位原点是?
08、CSS3有哪些新特性?
09、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?
三、Java类的题目
01、介绍Java的基本数据类型。
02、说说写Java的基本规范?
03、Java原型,原型链?有什么特点?
04、Java有几种类型的值?(堆:原始数据类型和栈:引用数据类型),你能画一下他们的内存图吗?
05、Java如何实现继承?
06、Java创建对象的几种方式?
07、Java作用链域?
08、谈谈This对象的理解。
09、eval是做什么的?
10、什么是window对象?什么是document对象?
OK,一小时到了,这个时间可不算短了,那么这些面试题你答出了几道呢?你写的答案正确了吗?现在你可以去翻看答案了。
如果你答出了绝大多数的或者是全部的题,并且答案也正确了,那么恭喜你……
你这时心里是不是有点小窃喜,认为自己有能力拿高薪了?虽然我也很想这么告诉你,但事实上这只能表明你的基础扎实,毕竟这只是一些非常基础的面试题。骚年~继续努力吧!
如果你只答出了小部分或者答出了大部分题但答案不正确,那么我只想说:“骚年,你的水平还差的远呢。”连这么基础的题你都打不出来,还想拿高薪?回去再练一段时间吧!
扎实的基础是你拿高薪的重要武器,如果你连基础都不扎实,那么想要攻克“高薪”这个厚实的堡垒,那只是痴人说梦罢了。
1.前端框架类问题,问你会不会用vue react啊
2.语言类,问你一些JavaScript语言的问题
3.项目经验,让你讲讲做过的项目,遇到的问题和解决之道
F. 前端hr面试常问的问题
面试其实就是一个不断选择与被选择的过程(不知道说的对不对)。不同公司的面试方式都有所不同,大多数人都有过多次面试的经历,前端面试也不外乎那么一些啦(好像有些废话的感觉)。
面试之前的小故事
HR会打电话过来我是××公司的,在××上看到你投到我们公司的简历,问你何时候有空约一个呗,然后说就星期*吧,既然都打电话请我面试了,好吧,那就约一个!
然后有些人会精心准备,不停刷面试题,整夜整夜的看着HTML/JS/CSS知识点,还有那些最新的、时髦的技术,看看到时候能不能唬住面试官;而有些人对自己胸有成竹,哥那么多年的前端经验了,啥项目没有经历过,不就一个面试,怕啥呢。
很快或者很慢的来到那天。你打扮的清清爽爽漂漂亮亮的,打扮的好会有加分不,没错,第一印象也是挺重要的。途中有些人可能会还一直想着面试官会问啥题目呢,那啥**属性是什么来着呢,再次拿出手机默默的看起资料;有些人可能就会想着公司不知道妹子多不多漂亮不呢,环境和福利不知道咋样,最好别碰到傻逼一样的面试官哎,不然这以后咋相处好呢。
来到公司,大小公司大家都见多了嘛,也是得看发展是吧,我们也不是肤浅的人,见到前台妹妹,哟,还不错哦。领你进会议室里,让你稍等一下,她去通知面试官,过了一会儿,不是面试官进来,那就是前台妹妹给您送来一杯水。面试官踱步向前,咦~,我是继续坐着呢,还是站着呢,还是站起来显礼貌一些嗯。
给面试的一般会是Team Leader或者非常资深的工程师。首先会让你自我介绍下,然后巴拉巴拉介绍自己,途中或者聊到面试官喜欢的`部分那就会中断问几个问题吧,介绍完自己,就进入正式的战斗了吧,一般会有2-3轮的回合。遇知战斗详情,请听下回分解。
哈哈, 开玩笑。以上瞎编胡造,如有雷同,纯属巧合。
这里就只谈谈前端技术的战斗回合吧,写的不好,请多见谅。
普通型
面试中问题会比较的零碎,html/js/css肯定都会有涉及。知识点不会有太大的规律,可能几个公司面试下来你遇到的问题一个都不带重复的。哎,前端的知识点就是乍一看深似海,仔细一看深似黑洞啊。问题好的话,一方面考察了面试人对前端接触的广度,深度的话也可以从中接触到一些。因为面试的时间有限,其实也非常考验面试官对一个人的洞察能力。
一般如果不是应届生的话,也就是会跟你交流你之前的项目,你担当的角色,你遇到的难题,怎么解决问题,用的框架,与其他工程师的交流沟通协作等等。 这些其实你心里肯定是有答案的(可能也有懵逼的),就看你的表达,能不能对上面试官的胃口。
进阶型
除了基本的问题,面试中会有一些明显设计过的题目。针对某几个知识点,或让你手写代码,或让你提供算法或思路。如果之前没有遇到过这类问题的话其实一下子真的挺难回答,或者直接懵逼了,或者回答不出面试官满意的答案。这其实对工程师的要求也是比较的高,不能只是单纯的切切页面,用用插件,需要对某一类问题或者模式或者算法有深入的了解,对问题的解决思路有很好的把握。
算法可能不是前端工程师的长项,但作为优秀的工程师,对算法的了解应该会只深不浅。
这种面试的题目既提现了公司对面试者的要求,也相对而言的会有所体现公司的水平。
出题型
题目比较的综合,会通过邮件发给你,或者有专门的页面提供,在面试之前让你2-3天的时间做完。题目可能是很有名的某一类交互,或游戏,或页面,或公司自己出的一类小东西。
因为非当场面试,所有有比较充足的时间来思考,来写一些代码。一般都会完成,所以其实比较的关注点就是对代码的质量,通过代码来考察面试者的思路以及代码**惯等等。
其未知性也比较多,可能因为有些东西可能没法通过代码来传递,沟通,其他的思路,或者题目的缺陷等等。所以这只是面试途中的一个小部分,大多数人其实都会能做的很好。
直接上机型
还有的就会直接给你某一个交互,或者一张静态页面,或者一个布局等等,直接给你台电脑让你当场写出来。写完之后再有所交流,说说自己的想法或者接着谈其他的。
当你写代码时候,其实暴露的东西也挺多的。你写的**惯,思路清晰不清晰,对代码的熟悉程度,可能你平时都是ctrl C + V的,这时候你咋办呢。
这个可能遇到的比较少,但也会是有的。
结束语
许多面试可能都会结合以上的几种类型,多方面的考察面试者,其实,大家都懂的。
G. hr如何面试web前端工程师,该问哪些技术问题
hr如何面试web前端工程师,该问哪些技术问题
一、基本知识
我们生活在网际网路时代,你想知道的任何事情几乎都能在15分钟内找到相关资讯。可是,能找到资讯并不等于你会使用它。我认为所有前端工程师至少都应 该掌握某些基本的知识,才能有效地完成自己的工作。如果一遇到问题,就停下工作上网四处搜寻解决方案,怎么可能保证按期完成工作呢?听听,还有谁在说“我 不知道,但我可以上网搜到。”请这些同学把手举起来,让大家认识一下(immediately raises a flag for me.)。下面我列出一些基本的知识点,这些都是我认为一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
[list][*]
DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
[*]
DOM操作——怎样新增、移除、移动、复制、建立和查询节点。
[*]
事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
[*]
XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
[*]
严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
[*]
盒模型——外边距、内边距和边框之间的关系,IE 8以下版本的浏览器中的盒模型有什么不同。
[*]
块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
[*]
浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
[*]
HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
[*]
JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
[/list]
重申一下,上述这些知识点都应该是你应该“想都不用想”的东西。我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。虽然上面列出的这些知识点并没有面面俱到,但我觉得你至少应该掌握这些,才有可能跟我坐到一间办公室里来。
二、少量提问
我非常赞同面试者问的问题越少越好。反复问应聘者各种问题既不公平,也很无聊。我在任何一次面试中,通常只问三个大问题,但每个问题又会涉及我所能想到的多个方面。回答每个大问题一般要经过几个步骤,这样我就可以在每个步骤中穿插着问一些小问题。比如说:
这个问题牵扯到一组我想要考察的基本知识点:DOM结构、DOM操作、事件处理、XHR和JSON。如果我要求你对换一种处理股票价格的方式,或者 让你在页面中显示其他资讯,就可以把更多的知识点包括进来。对于经验比较丰富应聘者,我也可以自如地扩充套件要考察的知识范围,最简单像JOSN与XML的区 别、安全问题、容量问题,等等。
我还希望应聘者给出的任何解决方案中都不要使用库。我想看到最原生态的程式码,你就当页面中没有包含任何库。你说你对哪个库了解多少多少,但我不能把 关于库的知识作为评判能力的因素,因为库是会随时间变化的。我需要的是真正理解库背后的机制,特别是能够徒手写出一个自己的库的人。
三、解决问题
做为一名前端工程师,最值得高兴的事莫过于解决同一个问题会有很多种不同的方法,而你要做的就是找出最合适的方法来。我在提问的时候,经常会在应聘 者解释完一种方法后问他们还有没有第二种方法。此时我会跟他们说,假设你的这个方法由于种种原因被否决了,那么你还能不能给出另一种方法。这样做可以达到 两个目的。
首先,可以测试出他们是否在毫无意义地复述书本中的东西。不能不承认,某些人确实有过目不忘的天赋,听他们在那里滔滔不绝地讲,你会觉得他们什么都 明白。可是,只要一跟这些人谈到怎么查询方案无效的原因,以及能否拿出一个新方案来,他们往往就傻眼了。这时候,如果我听到“我不明白这个方案为什么不够 好”之类的反问,心里立刻就明白我的问题已经超出了他们的能力范围,而他们只是想拿自己死记硬背的结论来蒙混过关。
其次,可以测试出他们已经掌握的(还是那句话,“想都不用想”)浏览器技术知识。如果他们对浏览器平台的核心知识有较好的理解,想出解决同一问题的不同方案根本没有那么难。
对一名前端工程师来说,这绝对是最重要的能力。前端工程师在工作中遇到本该如此却并未如此的难题(说你啦,IE6),应该说是一件很平常的事。一个方案无效就无计可施的人,做不了前端工程师。
考核应聘者解决问题能力的另一层原因,与我的个人喜好有关。在搞清楚应聘者知道什么不知道什么之后,我就会想着问一个他们知识领域之外的问题。这样 做的目的,就是想看看他们怎样运用已有的知识解决新问题。在解决问题的每一步,我也准备了一些提示,以防有人会卡壳打艮(在我面前15分钟一言不发,对我 评价这个人毫无帮助)。我真正感兴趣的,是他们能够从上一步前进到下一步。我希望看到一个人就在我眼前学到新知识。
注意:所有问题都与浏览器技术相关。我不相信出几道抽象的逻辑题,就能够考出某人解决Web技术问题的能力。在我看来,这无异于让素描大师画肖像(或者让刘翔跟博尔特同场竞技),没有意义,也得不到任何有价值的资讯。
HR一般不会面试太深的问题,主要是了解一下你之前的工作经历,更多的是你自己描述,中间可能会问一些初级的问题,比如,你为什么从上一家单位离职等类似问题。
一道web前端工程师面试题,求解答。
这样的布局用绝对定位实现最合适,ABC的外层用相对定位,里边各列用绝对定位就可以。至于CBA且B宽度自适应,还是用绝对定位,但只定位C,A分部到两侧,中间的列margin设成左右列的宽度就可以。
web前端工程师如何才能硬气的跳槽?
web前端开发工程师想要硬气的跳槽,起码应该达到以下几点:
1.掌握扎实的技术基础,
需要掌握技术包括:HTML、CSS、JavaScript;
HTML是Web程式设计的基础,HTML也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页档案本身是一种文字档案,通过在文字档案中新增标记符,可以告诉浏览器如何显示其中的内容。
维护大型的CSS程式码库并非易事,特别是那些随意散漫未经组织的CSS程式码极易变成一团乱麻,所以,应该掌握CSS命名规范,来帮助开发者编写优质的程式码。
2.深入理解前端工程化和元件开发;
需要熟悉web前端框架—— React、Vue.js等,
React为我们提供了直接易用的,以状态为核心的前端应用开发方式,前端工程师应该会分析React内部工作原理,讨论React中简单元件、类元件等渲染流程。
Vue.js单元测试是应用开发中不可或缺的部分,日常开发中会用到的Vue.js单元测试的例子,所以应该掌握。
3.熟练掌握Web开发相关知识
至少熟悉一门后端语言,例如Node.js、Java、Go等;
Node.js内部原理视非常重要的,应该明白Node.js的主程序是如何启动的、如何载入内建模组、os包如何实现等等。
4.对技术有热情,有一定前端架构能力或者技术深度;具备团队合作意识强,能够多团队协作开发;具备企业级大型前端应用开发经验更佳。
如何识别一个人是web前端工程师
前端工程师需要懂得设计类程式码和js,有需要了解一些后台语言,例如PHP等。
如何实现成为web前端工程师的梦想
1.入门阶段:能够解决一些问题的水平。有一定的基础(比如最常见的HTML标签及其属性、事件、方法;最常见的CSS属性;基础的JavaScript程式设计能力),能够完成一些简单的Web前端研发需求。
2.进阶阶段:将JavaScript、HTML、CSS之类的编码帮助手册里的每个方法/属性都通读几遍!只有将基础打好,以后的路才能走的顺畅。
3.入室:最强程式码,知道所有能够解决需求的各种方案,能够选择使用最优秀的方案满足需求。这个级别基本上产品开发程式设计中的程式码主力。程式设计师应该能够肯定的回答:对于这个需求而言,我的程式码就是最优秀的程式码。
4.注重细节,注意那些当前需求里没有明文给出的细节:程式码效能的差异、执行平台(浏览器)的差异、需求的隐性扩充套件、程式码的向后相容等等。
如何了解web前端工程师和UI设计师
web前端工程师是不参与任何的设计,直接将网站美工制作的网站效果图使用ps按照效果图进行切片并使用、css、js等程式码进行网页的制作,最终编写出符合w3c标准的相容各个主流浏览器的静态页面,同时还需要按照后台开发人员的要求留下一些后台资料的接口。所以说网站前端工程师更多的是程式设计而不是设计。
UI设计师一般是学美术或者设计出身,精通photoshop、AI、AE等平面设计工具,其在网站开发过程的中的职责就是按照客户或者公司的需求设计出符合客户需求和接口或者颜色符合大众视觉的网站效果,如根据不同行业的需求设计颜色、设计接口风格等,其工作的最后成果就是网站的效果图。
web前端工程师进阶学习路线如何走
less和sass什么时候学都行,1,2天就能学会。这个不着急,没有什么承上启下的作用,可以单独拿出来学。
bootstrap就是一个框架,把最主要的栅格系统看看就好。其他的大概了解能干啥就行,很多公司,是不让用bootstrap的,而是用原始码自己写。这个用一天的时间没啥问题。
node.js和angular比较重要,如果学会,算是上了一个台阶了。所以重点说说这个。
angular属于mvvm框架,一开始觉得angular挺复杂的,所以想学一个简单的,轻量级的,所以决定先学vue。但是在了解的过程中发现,很多的专业名词,没听过,或者理解不透。所以又开始从头学习node.js。在学习node.js的过程中又开始迷茫,发现了很多JS不懂的地方。
所以,又开始深入研究js的dom,函式,ajax,阵列等。总之用了很长的时间,浪费了很长时间。
最后总结一下啊。其实,没必要钻那么多牛角尖。
先做着vue的例子,不懂的地方,直接略过,很多时候,不理解的不懂的东西,用着用着,突然就能明白。照猫画虎先把VUE的例子跟着做一遍之后,同时梳理一下涉及到的JS知识点。能自己用vue做出几个小成品的时候,开始结合js研究node.js。之后再去涉及angular。
angular差不多有个大概了解的时候,反过头接着学vue,你会发现,又会发现很多新东西。
web前端这个东西特别有意思,当你达到一个高度,返回来再看以前的技术,会发现,哎呀,竟然又能发现新大陆。
厦门web前端工程师培训哪家好
培训学校很多,没有具体的衡量标准的。但是可以从几方面去选择:
1 有很多优秀导师的
2 培养出很多优秀学员的
3 只做培训的,没有做其他的
4 做的比较久的。
北京WEB前端工程师培训哪个好
建议找全程面授课程的地方学习,课程体系很重要,现在企业在用人方面讲究全栈的前端工程师人才,所在在课程选择上要慎重,学习内容要基于HTML5,要包含pc端+移动端+后端。这要才能学的系统,就业上才会有所保障。
H. 前端面试题整理(一)
进程是CPU资源分配的最小单位,线程是CPU调度的最小单位
其中GUI渲染线程和JS引擎是无法同时工作的
默认情况下, TCP 连接会启用延迟传送算法 (Nagle 算法), 在数据发送之前缓存他们. 如果短时间有多个数据发送, 会缓冲到一起作一次发送 (缓冲大小见 socket.bufferSize), 这样可以减少 IO 消耗提高性能.
如果是传输文件的话, 那么根本不用处理粘包的问题, 来一个包拼一个包就好了. 但是如果是多条消息, 或者是别的用途的数据那么就需要处理粘包.
可以参见网上流传比较广的一个例子, 连续调用两次 send 分别发送两段数据 data1 和 data2, 在接收端有以下几种常见的情况:
A. 先接收到 data1, 然后接收到 data2 .
B. 先接收到 data1 的部分数据, 然后接收到 data1 余下的部分以及 data2 的全部.
C. 先接收到了 data1 的全部数据和 data2 的部分数据, 然后接收到了 data2 的余下的数据.
D. 一次性接收到了 data1 和 data2 的全部数据.
其中的 BCD 就是我们常见的粘包的情况. 而对于处理粘包的问题, 常见的解决方案有:
多次发送之前间隔一个等待时间
关闭 Nagle 算法
进行封包/拆包
通过滑动窗口协议(连续ARQ协议)实现,保证了分组无差错、有序接收、流量控制。接收方返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。如果这个窗口不为0的应答在传输过程中丢失,发送者一直等待,接收者以为发送者收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁
TCP使用了持续计时器。每当发送者收到一个0窗口的应答后就启动该计时器。计时器到时便主动发送报文询问接收者的窗口大小。若接收者仍然返回0窗口,则重置该计时器继续等待;若窗口不为0,则标识应答报文丢失了,此时重置发送窗口开始发送,这样就避免了死锁的产生
拥塞控制是作用于网络的,防止网络负载过大,常用的方法:1.慢启动、拥塞避免 2.快重传、快恢复。流量控制是作用于接收者的,控制发送者的发送速度使接收者来得及接收,防止分组丢失
发送方维持一个叫做拥塞窗口CWnd的状态变量,控制着传输速度,TCP开始发送报文时CWnd=1。一个传输轮次所经历的时间就是往返时间RTT,每经过一个RTT并且按时收到确认,就将拥塞窗口CWnd加倍。还有一个叫慢启动门限ssthresh的状态变量,当CWnd<ssthresh时,使用慢启动,当CWnd>=ssthresh改用拥塞避免算法
每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1而不是加倍。无论在慢启动阶段还是拥塞避免阶段,只要发送方没有按时收到确认,就把慢启动门限设置为出现拥塞时的拥塞窗口cwnd的一半(但不小于2)。然后把拥塞窗口cwnd重置为1,执行慢启动算法
接收方收到一个失序的报文段后就立刻发出重复确认而不是等到自己发送数据时捎带确认。只要发送方一连收到三个重复确认就立即重传对方尚未收到的报文段,而不是等待重传计时器到期
当发送方连续收到三个重复确认时,把慢启动门限ssthresh减半,但是并不执行慢开始算法,而是将拥塞窗口cwnd设置为ssthresh减半后的值,直接执行拥塞避免算法。快重传配合快恢复的TCP Reno版本是目前使用最广的版本。
帧:HTTP/2 数据通信的最小单位消息:指 HTTP/2 中逻辑上的 HTTP 消息。例如请求和响应等,消息由一个或多个帧组成。
流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID
HTTP/1.x会在请求和响应中中重复地携带不常改变的、冗长的头部数据,给网络带来额外的负担。
服务端可以在发送页面HTML时主动推送其它资源,而不用等到浏览器解析到相应位置,发起请求再响应。例如服务端可以主动把JS和CSS文件推送给客户端,而不需要客户端解析HTML时再发送这些请求。
服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送也遵守同源策略,服务器不会随便推送第三方资源给客户端。
HTTP 1.x 中,如果想并发多个请求,必须使用多个 TCP 链接,且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制。
HTTP2中:
同域名下所有通信都在单个连接上完成。
单个连接可以承载任意数量的双向数据流。
数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装
前端面试与进阶指南
从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!