前端面试问题(持续更新)

一、有关BFC的理解
二、盒模型的理解
三、box-sizing的理解
四、渐进加强 VS 优雅降级
五、url->页面加载完成的整个流程
六、js组成部分
七、如何跨域访问
八、js判断数组
九、严格模式
十、ajax的优缺点
十一、HTML、XML、XHTML 有什么区别
十二、html语义化
1三、内容与样式分离
1四、meta标签的使用
1五、文档声明的做用
1六、严格模式和混杂模式
1七、<!doctyle html>的做用
1八、常见浏览器内核
1九、页面导入样式时,使用link和@import有什么区别
20、浏览器内核的理解

有关BFC的理解

BFC用来格式化块级盒子
BFC: 提供一个环境,html元素会在这个环境中按照必定的规则进行布局。
ex: 例如浮动元素会造成bfc,浮动元素内部子元素主要受该浮动元素影响,可是两个浮动元素互相不影响。
这个能够理解为一个独立容器,里边规则不会影响到外边。
那么什么状况下会生成bfc呢:
一、浮动元素,float除none之外的值
二、绝对定位,position(absolite,fixed)
三、dispaly = inline-blocks|table-cells|table-captions
四、overflow除visible之外的值
做用:css

一、能够阻止元素被浮动元素覆盖
二、包含浮动元素
三、若是属于同一个bfc的两个元素上下margin会发生重叠,但若是两个元素属于两个不一样的bfc那么margin就不会发生重叠

盒模型的理解

css盒子模型,包含了content,padding,border,margin
这些基本的好比好比哪儿是content你们都了解我就说了在设置width = 300px时表明的是content的宽度那么最终的宽度是content+padding+border+margin.
css外边距合并
刚才在bfc中提到,在一个bfc中,css外边距是会发生重叠的,解决方法就是放在两个bfc中。当咱们使用盒模型的时候须要注意的是浏览器的兼容性,这个很好解决在html中声明 <!DOCTYPE html>,ul在mozilia默认有padding值,而在IE中只有margin有值
盒模型中咱们常使用一个属性叫box-sizing,这会单独起一页,这也是面一常常出的问题html

box-sizing的理解

box-sizing: content-box|border-box|inherit
content-box是默认值,总宽度= margin+border+padding+width
border-box: 在css中设置的width = border + padding + content,那么总宽度 = margin + width常在box宽度是100%,又想要两边有内间距
inherit: 这就不用说了,是继承html5

渐进加强 VS 优雅降级

渐进加强:低浏览器实现基本功能,高级浏览器实现交互、效果达到更好的体验
优雅降级: 在高级浏览器实现完整功能,而后针对低级浏览器进行hack以便低级浏览器可以正常运行
二者是由于各类版本的浏览器对css3的支持状况而不一样所形成的css3

url->页面加载完成的整个流程

一、浏览器查询域名对应的IP地址
二、浏览器根据IP地址与服务器创建socket链接
三、浏览器与服务器进行通讯:浏览器请求,服务器处理请求
四、浏览器与服务器断开链接
这个内容太多了,我会专门写一篇blog来解释,可是面试这些回答这些就够了git

js组成部分

一、ECMAScript 定义脚本语言的属性、方法和对象
二、文档对象类型(DOM):把整个页面规划成由节点层级构成的文档
三、浏览器对象模型(BOM):处理浏览器宽口和框架github

如何跨域访问

一、jsonp跨域访问
二、window.name进行跨域
三、html5中的window.postMessage方法
四、http头部信息中加入origin
这个在我一片blog中专门讲到了两种jsonp和origin现在最经常使用的两种跨域请求方式web

js判断数组

return Object.prototype.toString.call(arg) === '[object Array]'

严格模式

使用方法:进入严格模式的标志 'use strict',语法更加严格,更安全,提升运行速度。
一、全局变量显示声明
二、静态绑定:属性和方法归属的对象,在编译阶段就肯定
三、加强的安全措施:①禁止this指向全局对象②禁止在函数内部遍历调用栈
四、禁止删除变量,除非建立对象使用configurable=true
五、显示报错:对对象的只读属性,只有getter的对象赋值,对禁止扩展的对象添加新属性都会报错
六、重名错误:对象不能有同名的参数,函数不能有重名的参数
七、禁止八进制表示法
八、禁止arguments赋值,不会追踪参数的变化,禁止使用arguments.callee
九、函数必须声明在顶层
十、新增保留字面试

ajax的优缺点

优势:减轻服务器的负担,按需取数据,最大程度减小冗余请求,局部刷新。
缺点:浏览器之间有差别,对流媒体和移动设备支持不够好ajax

HTML、XML、XHTML 有什么区别

html:超文本标记语言,显示信息,不区分大小写
xhtml:升级版的html,区分大小写
xml:可扩展标记语言被用来传输和存储数据json

html语义化

直观认识标签和属性的做用,便于阅读和维护

内容与样式分离

能够确保网页平稳退化,易于维护

meta标签的使用

meta name="keyword" 告诉搜素引擎网页的关键词
meta name="description" 告诉搜素引擎站点的内容
mata name="author" content="name"站点制做望着
meta name="viewport" content="width=device-width, initial-scale=1.0"
响应式页面

文档声明的做用

让浏览器解析器知道须要用什么规范来解析文档

严格模式和混杂模式

严格模式:浏览器最高标准呈现页面
混杂模式:页面以一种比较宽松的向后兼容的方式显示

<!doctyle html>的做用

使用html5标准来解析渲染页面,若是不写就进入混杂模式

常见浏览器内核

IE 用的是trident
firefox Gecko
opera Blink
safari Chrome webkit

页面导入样式时,使用link和@import有什么区别

页面被加载时,link被同时加载,@import会页面加载完成后在加载

浏览器内核的理解

渲染引擎和JS引擎
渲染引擎:负责取得网页的内容、整理讯息,以及计算网页的显示方式
JS引擎:解析和执行js来实现网页的动态效果

个人github,你的关注是我不断前进的动力https://github.com/skychenbo/...

相关文章
相关标签/搜索