面试时注意:
自我介绍不能太长,也不能过短,3分钟左右最合适,尤其做为web前端技术
方面的面试,更加要说到点上,我依次从学习方面、项目实践、未来规划这
三个方面写下web前端面试的自我介绍。
下载资源:https://www.yinxiangit.com
前端开发面试全面知识大纲集合:
HTML+CSS:
对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应
JavaScript:
数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。
其他知识点:
HTTP、安全、正则、优化、重构、响应式、移动端、前端三大框架的理解、团队协作、可维护、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 作用? 严格模式与混杂模式如何区分?它们有何意义?
1、<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。
2、严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。
3、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
4、DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。
行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
1、CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
2、行内元素有:a b span img input select strong(强调的语气)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
3、知名的空元素:
<br> <hr> <img> <input> <link> <meta>
鲜为人知的是:
<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
link 和@import 的区别是?
1、link属于XHTML标签,而@import是CSS提供的;
2、页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
3、import只在IE5以上才能识别,而link是XHTML标签,无兼容问题;
4、link方式的样式的权重 高于@import的权重.
浏览器的内核分别是什么?
* IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera内核原为Presto,现为Blink;
常见兼容性问题?
1、png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.
2、浏览器默认的margin和padding不同,解决方案是加一个全局的
*{margin:0;padding:0;}来统一。
3、IE6双边距bug:块属性标签float后,又有横行的margin情况下,
在ie6显示margin比设置的大。
4、浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}
5、这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
6、渐进识别的方式,从总体中逐渐排除局部。
7、首先,巧妙的使用“9”这一标记,将IE游览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
1、HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
2、绘画 canvas
用于媒介回放的 video 和 audio 元素
本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
sessionStorage 的数据在浏览器关闭后自动删除
语意化更好的内容元素,比如 article、footer、header、nav、section
表单控件,calendar、date、time、email、url、search
新的技术webworker, websockt, Geolocation
3、移除的元素
纯表现的元素:basefont,big,center,font, s,strike,tt,u;
对可用性产生负面影响的元素:frame,frameset,noframes;
4、支持HTML5新标签:
IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,
浏览器支持新标签后,还需要添加标签默认的样式:
5、当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
<!--[if lt IE 9]>
<scriptsrc="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
语义化的理解?
- 用正确的标签做正确的事情!
- html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;
- 在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的。
- 搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。
- 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
HTML5的离线储存?
localStorage 长期存储数据,浏览器关闭后数据不丢失;
sessionStorage 数据在浏览器关闭后自动删除。
iframe有那些缺点?
- iframe会阻塞主页面的Onload事件;
- iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
- 使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript
- 动态给iframe添加src属性值,这样可以可以绕开以上两个问题。
请描述一下 cookies,sessionStorage 和 localStorage 的区别?
- cookie在浏览器和服务器间来回传递。 sessionStorage和localStorage不会
- sessionStorage和localStorage的存储空间更大;
- sessionStorage和localStorage有更多丰富易用的接口;
- sessionStorage和localStorage各自独立的存储空间;
CSS(面试)
1、介绍一下CSS的盒子模型?
- 有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 pading;
- 盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border)
2、CSS3有哪些新特性?
- CSS3实现圆角(border-radius:8px),阴影(box-shadow:10px),
- 对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)
- transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜
- 增加了更多的CSS选择器 多背景 rgba
3、为什么要初始化CSS样式。
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
最简单的初始化方法就是: * {padding: 0; margin: 0;} (不建议)
当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
4、列出display的值,说明他们的作用。position的值, relative和absolute定位原点是?
- 1.
- block 象块类型元素一样显示。
- none 缺省值。象行内元素类型一样显示。
- inline-block 象行内元素一样显示,但其内容象块类型元素一样显示。
- list-item 象块类型元素一样显示,并添加样式列表标记。
- 2.
- absolute
- 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
- fixed (老IE不支持)
- 生成绝对定位的元素,相对于浏览器窗口进行定位。
- relative
- 生成相对定位的元素,相对于其正常位置进行定位。
- static 默认值。没有定位,元素出现在正常的流中
- (忽略 top, bottom, left, right z-index 声明)。
- inherit 规定从父元素继承 position 属性的值。
5、如何设计一个满屏“品”字布局?
简单的方式:
- 上面的div宽100%,
- 下面的两个div分别宽50%,用float或inline使其不换行。
javascript(面试)
1、JS的数据类型有哪些?typeof运算符的执行结果都有哪些数据类型?
数据类型主要包括两部分:
基本数据类型: Undefined、Null、Boolean、Number和String
引用数据类型: Array 、Object
typeof运算符的结果类型:
number,string,boolean,object,function,undefined
2.null,undefined 的区别?
null 表示一个对象被定义了,值为“空值”;
undefined 表示不存在这个值。
3.怎么判断一个变量没有被定义
typeof bianliang ==”undefined”
4.怎么判断一个变量arr的话是否为数组(此题用typeof不行)
Arr instanceof Array
5.事件委托是什么
事件委托就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素(document)。
6.描述下JSON对象的两个很重要的方法
JSON.parse() //JSON字符串转换为JSON对象
JSON.stringify() //JSON对象转化为字符串
7.写一个函数getRandomNumber(startNum,endNum),去除startNum到endNum之间的任意随机数
function getRandomNumber(startNum,endNum){
var endRand = endNum - startNum + 1;
//0~1中间的16位数字
var randNum = Math.random();
//随机取出来0~9之间的任意一个数字
randNum = Math.floor(randNum * endRand);
return randNum+startNum;
}
8.写一个通用的去除字符串左右空格的函数?
String.prototype.strim = function(){
return this.replace(/(^s|s$)/g,””);
}
其他问题(面试)
1、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
查找浏览器缓存
DNS解析、查找该域名对应的IP地址、重定向(301)、发出第二个GET请求
进行HTTP协议会话
客户端发送报头(请求报头)
服务器回馈报头(响应报头)
html文档开始下载
文档树建立,根据标记请求所需指定MIME类型的文件
文件显示
浏览器这边做的工作大致分为以下几步:
加载:根据请求的URL进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。
解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)
2、http状态码有那些?分别代表是什么意思?
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证 403 服务器已经理解请求,但是拒绝执行它。
500-599 用于支持服务器错误。 503 – 服务不可用
3、用正则验证身份号码?
1、//身份证正则表达式(15位)
isIDCard1=/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;
2、//身份证正则表达式(18位)
isIDCard2=/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/;
身份证正则合并:(^d{15})|(d17([0−9]|X))
4、跨域解决方法小结
- 1、:使用jsonp ,即json with padding(内填充),顾名思义,就是把JSON填充到一个盒子里
- 2、:直接在服务器端设置跨域资源访问 CORS(Cross-Origin Resource Sharing),设置Request Header头中Access-Control-Allow-Origin为指定可获取数据的域名
- 3、:直接请求一张图片
- 4、:通过修改document.domain来跨子域5、:通过window.name来跨域接收数据
- 6、:使用HTML5的window.postMessage方法跨域
5、TCP/IP四层协议体系结构?
由上至下顺序为:
- 1、应用层(FTP、Telnet、SMTP、RIP、NFS、DNS)
- 2、运输层(TCP、UDP)
- 3、网际层(IP、ICMP、ARP、RARP)
- 4、网络接口层
五层协议体系结构?
- 应用层
- 运输层
- 网络层
- 数据链路层
- 物理层
OSI的七层体系结构?
- 应用层
- 表示层
- 会话层
- 运输层
- 网络层
- 数据链路层
- 物理层
浏览器同源策略:
浏览器安全的基石是“同源策略”(same-origin policy)。所谓“同源”指的是“三个相同”:
- 协议相同
- 域名相同
- 端口相同
原文地址:https://www.cnblogs.com/bingerger/p/11516829.html