常见面试题

2018-03-21  本文已影响0人  清水流觞life

谈一下你对浏览器内核的理解?常见的浏览器内核?

主要由渲染引擎和JS引擎组成。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎:解析和执行javascript来实现网页的动态效果。
常见内核:Webkit内核(Safiri、Chrome)、Trident内核(IE、360、搜狗)等。

html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?

新增功能

兼容性处理

<!--[if lt IE 9]>
    <script> src="http://html5shim.googlecode.com/svn
    /trunk/html5.js"</script>
 <![endif]-->

简述一下你对HTML语义化的理解?

对BFC规范(块级格式化上下文:block formatting context)的理解?

一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型。不同类型的 Box,会参与不同的 Formatting Context(决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染,也就是说BFC内部的元素和外部的元素不会互相影响。

请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?

经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧。

  1. png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8。
  2. 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
  3. IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性;解决方法:统一通过getAttribute()获取自定义属性。
  4. Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,可通过加入 CSS 属性 -webkit-text-size-adjust: none;解决。

浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

如何解决跨域问题?

jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面

什么是Ajax?创建一个Ajax的过程是怎么样的?

概念
异步请求,向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。
过程

  1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象;

  2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息;

  3. 设置响应HTTP请求状态变化的函数;

  4. 发送HTTP请求;

  5. 获取异步调用返回的数据;

  6. 使用JavaScript和DOM实现局部刷新;

你有用过哪些前端性能优化的方法?

  1. 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

  2. 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数.

  3. 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

  4. 当需要设置的样式很多时设置className而不是直接操作style。

  5. 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

  6. 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

  7. 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳

  8. 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢

对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的.

http状态码有那些?分别代表是什么意思?

一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)

注:这题胜在区分度高,知识点覆盖广,再不懂的人,也能答出几句,而高手可以根据自己擅长的领域自由发挥,从URL规范、HTTP协议、DNS、CDN、数据库查询、 到浏览器流式解析、CSS规则构建、layout、paint、onload/domready、JS执行、JS API绑定等等

详细版:

简洁版:

谈谈你对浏览器本地缓存的理解?

概念:本地缓存是指浏览器请求资源时命中了浏览器本地的缓存资源,浏览器并不会发送真正的请求给服务器了。
优点

执行过程

简述JavaScript原型、原型链概念及其特点。

Javascript如何实现继承?如何判断对象是否是继承过来?

继承方式:构造继承原型继承实例继承拷贝继承
常用继承方式:构造函数与原型混合方式

function Parent(){
    this.name = 'wang';
}
function Child(){
    this.age = 28;
}
Child.prototype = new Parent(); // 继承了Parent,通过原型
var demo = new Child();
alert(demo.age);
alert(demo.name); // 得到被继承的属性

JavaScript中hasOwnProperty函数方法是返回一个布尔值,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。object.hasOwnProperty(proName)

new操作符具体干了什么呢?

var obj  = {};
obj.__proto__ = Base.prototype;
Base.call(obj);

谈谈对this对象的理解。

Javascript作用链域?

什么是闭包?为什么要用它? 它的特性?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。
特性:

Vue是如何实现双向绑定的?

Object.defineProperty(vue):劫持数据的 gettersetter

如何理解Vue的Virtual DOM?使用Virtual DOM的必要性?

必要性

上一篇 下一篇

猜你喜欢

热点阅读