HTML&CSSjavascript
JavaScript:css
其余:html
DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。前端
DOM操做 —— 如何添加、移除、移动、复制、建立和查找节点等。html5
事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差异。java
XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。node
严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。jquery
盒模型 —— 外边距、内边距和边框之间的关系,及IE8如下版本的浏览器中的盒模型android
块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们git
浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。
HTML与XHTML —— 两者有什么区别,你以为应该使用哪个并说出理由。
JSON —— 做用、用途、设计结构
Doctype做用?标准模式与兼容模式各有什么区别?
HTML5 为何只须要写 ?
行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
首先:CSS规范规定,每一个元素都有display属性,肯定该元素的类型,每一个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素
行内元素有:a b span img input select strong(强调的语气)
块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
常见的空元素:
页面导入样式时,使用link和@import有什么区别?
介绍一下你对浏览器内核的理解?
常见的浏览器内核有哪些?
html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和HTML5?
HTML5 如今已经不是 SGML的子集,主要是关于图像,位置,存储,多任务等功能的增长
新增功能
移除的元素:
支持HTML5新标签:
<!--[if lt IE 9]> <script> src="http://html5shim.googlecode.com/svn /trunk/html5.js"</script> <![endif]-->
简述一下你对HTML语义化的理解?
HTML5的离线储存怎么使用,工做原理能不能解释一下?
在用户没有与因特网链接时,能够正常访问站点或应用,在用户与因特网链接时,更新用户机器上的缓存文件
原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),经过这个文件上的解析清单离线存储资源,这些资源就会像cookie同样被存储了下来。以后当网络在处于离线状态下时,浏览器会经过被离线存储的数据进行页面展现
如何使用:
CACHE MANIFEST #v0.11 CACHE: js/app.js css/style.css NETWORK: resourse/logo.png FALLBACK: / /offline.html
浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
请描述一下 cookies,sessionStorage 和 localStorage 的区别?
cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(一般通过加密)。
cookie数据始终在同源的http请求中携带(即便不须要),记会在浏览器和服务器间来回传递。
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存
存储大小:
有期时间:
iframe有那些缺点?
Label的做用是什么?是怎么用的?
<label for="Name">Number:</label> <input type=“text“name="Name" id="Name"/> <label>Date:<input type="text" name="B"/></label>
HTML5的form如何关闭自动完成功能?
如何实现浏览器内多个标签页之间的通讯? (阿里)
webSocket如何兼容低浏览器?(阿里)
页面可见性(Page Visibility API) 能够有哪些用途?
如何在页面上实现一个圆形的可点击区域?
实现不使用 border 画出1px高的线,在不一样浏览器的标准模式与怪异模式下都能保持一致的效果
<div style="height:1px;overflow:hidden;background:red"></div>
网页验证码是干吗的,是为了解决什么安全问题
title与h1的区别、b与strong的区别、i与em的区别?
title属性没有明确意义只表示是个标题,H1则表示层次明确的标题,对页面信息的抓取也有很大的影响
strong是标明重点内容,有语气增强的含义,使用阅读设备阅读网络时:会重读,而是展现强调内容
i内容展现为斜体,em表示强调的文本;
Physical Style Elements -- 天然样式标签 b, i, u, s, pre
Semantic Style Elements -- 语义样式标签 strong, em, ins, del, code
介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不一样的?
CSS选择符有哪些?哪些属性能够继承?
id选择器( # myid)
类选择器(.myclassname)
标签选择器(div, h1, p)
相邻选择器(h1 + p)
子选择器(ul > li)
后代选择器(li a)
通配符选择器( * )
属性选择器(a[rel = "external"])
伪类选择器(a:hover, li:nth-child)
可继承的样式: font-size font-family color, UL LI DL DD DT
不可继承的样式:border padding margin width height
CSS优先级算法如何计算?
优先级就近原则,同权重状况下样式定义最近者为准
载入样式以最后载入的定位为准
优先级为:
CSS3新增伪类有那些?
p:first-of-type 选择属于其父元素的首个
元素的每一个
元素。
p:last-of-type 选择属于其父元素的最后
元素的每一个
元素。
p:only-of-type 选择属于其父元素惟一的
元素的每一个
元素。
p:only-child 选择属于其父元素的惟一子元素的每一个
元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每一个
元素。
:after 在元素以前添加内容,也能够用来作清除浮动。
:before 在元素以后添加内容
:enabled
:disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中
如何居中div?
div{ width:200px; margin:0 auto; }
div { position: absolute; width: 300px; height: 300px; margin: auto; top: 0; left: 0; bottom: 0; right: 0; background-color: pink; /* 方便看效果 */ }
div { position: relative; /* 相对定位或绝对定位都可 */ width:500px; height:300px; top: 50%; left: 50%; margin: -150px 0 0 -250px; /* 外边距为自身宽高的一半 */ background-color: pink; /* 方便看效果 */ }
transform
属性div { position: absolute; /* 相对定位或绝对定位都可 */ width:500px; height:300px; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: pink; /* 方便看效果 */ }
水平垂直居中三
.container { display: flex; align-items: center; /* 垂直居中 */ justify-content: center; /* 水平居中 */ } .container div { width: 100px; height: 100px; background-color: pink; /* 方便看效果 */ }
display有哪些值?说明他们的做用。
position的值relative和absolute定位原点是?
CSS3有哪些新特性?
请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
用纯CSS建立一个三角形的原理是什么?
#demo { width: 0; height: 0; border-width: 20px; border-style: solid; border-color: transparent transparent red transparent; }
一个满屏 品 字布局 如何设计?
css多列等高如何实现?
常常遇到的浏览器的兼容性有哪些?缘由,解决方法是什么,经常使用hack的技巧
.bb{ background-color:red;/*全部识别*/ background-color:#00deff\9; /*IE六、七、8识别*/ +background-color:#a200ff;/*IE六、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ }
IE下,能够使用获取常规属性的方法来获取自定义属性,也能够使用getAttribute()获取自定义属性;
Firefox下,只能使用getAttribute()获取自定义属性
解决方法:统一经过getAttribute()获取自定义属性。
IE下,even对象有x,y属性,可是没有pageX,pageY属性
Firefox下,event对象有pageX,pageY属性,可是没有x,y属性
解决方法:(条件注释)缺点是在IE浏览器下可能会增长额外的HTTP请求数。
Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,
可经过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。
超连接访问事后hover样式就不出现了。被点击访问过的超连接样式不在具备hover和active了解决方法是改变CSS属性的排列顺序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
li与li之间有看不见的空白间隔是什么缘由引发的?有什么解决办法?
为何要初始化CSS样式
absolute的containing block(容器块)计算方式跟正常流有什么不一样?
不管属于哪一种,都要先找到其祖先元素中最近的 position 值不为 static 的元素,而后再判断:
一、若此元素为 inline 元素,则 containing block为可以包含这个元素生成的第一个和最后一个 inline box 的 padding box (除 margin, border 外的区域) 的最小矩形;
二、不然,则由这个祖先元素的 padding box 构成。若是都找不到,则为 initial containing block。
补充:
CSS里的visibility属性有个collapse属性值是干吗用的?在不一样浏览器下之后什么区别?
position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
对BFC规范(块级格式化上下文:block formatting context)的理解?
css定义的权重
/*权重为1*/ div{ } /*权重为10*/ .class1{ } /*权重为100*/ #id1{ } /*权重为100+1=101*/ #id1 div{ } /*权重为10+1=11*/ .class1 div{ } /*权重为10+10+1=21*/ .class1 .class2 div{ }
请解释一下为何须要清除浮动?清除浮动的方式
.clearfix:before, .clearfix:after { content: " "; display: table; } .clearfix:after { clear: both; } .clearfix { *zoom: 1; }
&:after,&:before{ content: " "; visibility: hidden; display: block; height: 0; clear: both; }
解析原理:
经过分析发现,除了clear:both用来闭合浮动的,其余代码无非都是为了隐藏掉content生成的内容,这也就是其余版本的闭合浮动为何会有font-size:0,line-height:0
什么是外边距合并?
zoom:1的清除浮动原理?
移动端的布局用过媒体查询吗?
假设你如今正用一台显示设备来阅读这篇文章,同时你也想把它投影到屏幕上,或者打印出来,而显示设备、屏幕投影和打印等这些媒介都有本身的特色,CSS就是为文档提供在不一样媒介上展现的适配方法
<style> @media (min-width: 700px) and (orientation: landscape){ .sidebar { display: none; } } </style>
使用 CSS 预处理器吗?喜欢那个?
CSS优化、提升性能的方法有哪些?
浏览器是怎样解析CSS选择器的?
margin和padding分别适合什么场景使用?
::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的做用
如何修改chrome记住密码后自动填充表单的黄色背景 ?
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { background-color: rgb(250, 255, 189); /* #FAFFBD; */ background-image: none; color: rgb(0, 0, 0); }
设置元素浮动后,该元素的display值是多少?
怎么让Chrome支持小于12px 的文字?
让页面里的字体变清晰,变细用CSS怎么作?
font-style属性可让它赋值为“oblique” oblique是什么意思?
position:fixed;在android下无效怎么处理?
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
若是须要手动写动画,你认为最小时间间隔是多久,为何?(阿里)
display:inline-block 何时会显示间隙?(携程)
什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么作)
什么是CSS 预处理器 / 后处理器?
介绍js的基本数据类型
介绍js有哪些内置对象?
说几条写JavaScript的基本规范?
JavaScript原型,原型链 ? 有什么特色?
function Func(){} Func.prototype.name = "Sean"; Func.prototype.getInfo = function() { return this.name; } var person = new Func();//如今能够参考var person = Object.create(oldObject); console.log(person.getInfo());//它拥有了Func的属性和方法 //"Sean" console.log(Func.prototype); // Func { name="Sean", getInfo=function()}
JavaScript有几种类型的值?,你能画一下他们的内存图吗?
栈:原始数据类型(Undefined,Null,Boolean,Number、String)
堆:引用数据类型(对象、数组和函数)
两种类型的区别是:存储位置不一样;
引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。若是存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中得到实体
如何将字符串转化为数字,例如'12.3b'?
如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』?
function commafy(num){ return num && num .toString() .replace(/(\d)(?=(\d{3})+\.)/g, function($1, $2){ return $2 + ','; }); }
如何实现数组的随机排序?
var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort1(arr){ for(var i = 0,len = arr.length;i < len; i++ ){ var rand = parseInt(Math.random()*len); var temp = arr[rand]; arr[rand] = arr[i]; arr[i] = temp; } return arr; } console.log(randSort1(arr));
var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort2(arr){ var mixedArray = []; while(arr.length > 0){ var randomIndex = parseInt(Math.random()*arr.length); mixedArray.push(arr[randomIndex]); arr.splice(randomIndex, 1); } return mixedArray; } console.log(randSort2(arr));
var arr = [1,2,3,4,5,6,7,8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) console.log(arr);
Javascript如何实现继承?
构造继承
原型继承
实例继承
拷贝继承
原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式
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建立对象的几种方式?
javascript建立对象简单的说,无非就是使用内置对象或各类自定义对象,固然还能够用JSON;但写法有不少种,也能混合使用
一、对象字面量的方式
person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};
二、用function来模拟无参的构造函数
function Person(){} //定义一个function,若是使用new"实例化",该function能够看做是一个Class person.name="Mark"; var person=new Person(); person.age="25"; person.work=function(){ alert(person.name+" hello..."); } person.work();
function Pet(name,age,hobby){ this.name=name;//this做用域:当前对象 this.age=age; this.hobby=hobby; this.eat=function(){ alert("我叫"+this.name+",我喜欢"+this.hobby+",是个程序员"); } } var maidou =new Pet("麦兜",25,"coding");//实例化、建立对象 maidou.eat();//调用eat方法
var wcDog =new Object(); wcDog.name="旺财"; wcDog.age=3; wcDog.work=function(){ alert("我是"+wcDog.name+",汪汪汪......"); } wcDog.work();
function Dog(){ } Dog.prototype.name="旺财"; Dog.prototype.eat=function(){ alert(this.name+"是个吃货"); } var wangcai =new Dog(); wangcai.eat();
function Car(name,price){ this.name=name; this.price=price; } Car.prototype.sell=function(){ alert("我是"+this.name+",我如今卖"+this.price+"万元"); } var camry =new Car("凯美瑞",27); camry.sell();
Javascript做用链域?
谈谈This对象的理解。
eval是作什么的?
什么是window对象? 什么是document对象?
null,undefined 的区别?
null 表示一个对象是“没有值”的值,也就是值为“空”;
undefined 表示一个变量声明了没有初始化(赋值);
undefined不是一个有效的JSON,而null是;
undefined的类型(typeof)是undefined;
null的类型(typeof)是object;
Javascript将未赋值的变量默认值设为undefined;
Javascript历来不会将变量设为null。它是用来让程序员代表某个用var声明的变量时没有值的
typeof undefined
typeof null //"object"
注意:
写一个通用的事件侦听器函数。
// event(事件)工具集,来源:github.com/markyun markyun.Event = { // 页面加载完成后 readyEvent : function(fn) { if (fn==null) { fn=document; } var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = fn; } else { window.onload = function() { oldonload(); fn(); }; } }, // 视能力分别使用dom0||dom2||IE方式 来绑定事件 // 参数: 操做的元素,事件名称 ,事件处理程序 addEvent : function(element, type, handler) { if (element.addEventListener) { //事件类型、须要执行的函数、是否捕捉 element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, function() { handler.call(element); }); } else { element['on' + type] = handler; } }, // 移除事件 removeEvent : function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.datachEvent) { element.detachEvent('on' + type, handler); } else { element['on' + type] = null; } }, // 阻止事件 (主要是事件冒泡,由于IE不支持事件捕获) stopPropagation : function(ev) { if (ev.stopPropagation) { ev.stopPropagation(); } else { ev.cancelBubble = true; } }, // 取消事件的默认行为 preventDefault : function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 获取事件目标 getTarget : function(event) { return event.target || event.srcElement; }, // 获取event对象的引用,取到事件的全部信息,确保随时能使用event; getEvent : function(e) { var ev = e || window.event; if (!ev) { var c = this.getEvent.caller; while (c) { ev = c.arguments[0]; if (ev && Event == ev.constructor) { break; } c = c.caller; } } return ev; } };
["1", "2", "3"].map(parseInt) 答案是多少?
function parseInt(str, radix) { return str+'-'+radix; }; var a=["1", "2", "3"]; a.map(parseInt); // ["1-0", "2-1", "3-2"] 不能大于radix
事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?
什么是闭包(closure),为何要用它?
闭包是指有权访问另外一个函数做用域中变量的函数,建立闭包的最多见的方式就是在一个函数内建立另外一个函数,经过另外一个函数访问这个函数的局部变量,利用闭包能够突破做用链域,将函数内部的变量和方法传递到外部
闭包的特性:
//li节点的onclick事件都能正确的弹出当前被点击的li索引 <ul id="testUL"> <li> index = 0</li> <li> index = 1</li> <li> index = 2</li> <li> index = 3</li> </ul> <script type="text/javascript"> var nodes = document.getElementsByTagName("li"); for(i = 0;i<nodes.length;i+= 1){ nodes[i].onclick = (function(i){ return function() { console.log(i); } //不用闭包的话,值每次都是4 })(i); } </script>
function say667() { // Local variable that ends up within closure var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } var sayAlert = say667(); sayAlert()//执行结果应该弹出的667
javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?
如何判断一个对象是否属于某个类?
if(a instanceof Person){ alert('yes'); }
new操做符具体干了什么呢?
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
JSON 的了解?
var obj =eval('('+ str +')'); var obj = str.parseJSON(); var obj = JSON.parse(str); JSON对象转换为JSON字符串: var last=obj.toJSONString(); var last=JSON.stringify(obj);
js延迟加载的方式有哪些?
Ajax 是什么? 如何建立一个Ajax?
ajax的全称:Asynchronous Javascript And XML。
异步传输+js+xml
所谓异步,在这里简单地解释就是:向服务器发送请求的时候,咱们没必要等待结果,而是能够同时作其余的事情,等到有告终果它本身会根据设定进行后续操做,与此同时,页面是不会发生整页刷新的,提升了用户体验
(1)建立XMLHttpRequest对象,也就是建立一个异步调用对象
(2)建立一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息
(3)设置响应HTTP请求状态变化的函数
(4)发送HTTP请求
(5)获取异步调用返回的数据
(6)使用JavaScript和DOM实现局部刷新
Ajax 解决浏览器缓存问题?
一、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
二、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
三、在URL后面加上一个随机数: "fresh=" + Math.random();。
四、在URL后面加上时间搓:"nowtime=" + new Date().getTime();。
五、若是是使用jQuery,直接这样就能够了 $.ajaxSetup({cache:false})。这样页面的全部ajax都会执行这条语句就是不须要保存缓存记录
同步和异步的区别?
如何解决跨域问题?
模块化开发怎么作?
var module1 = (function(){ var _count = 0; var m1 = function(){ //... }; var m2 = function(){ //... }; return { m1 : m1, m2 : m2 }; })();
AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') // 依赖能够就近书写 b.doSomething() // ... }) // AMD 默认推荐 define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() // ... })
异步加载JS的方式有哪些?
(1) defer,只支持IE
(2) async:
(3) 建立script,插入到DOM中,加载完毕后callBack
documen.write和 innerHTML的区别
DOM操做——怎样添加、移除、移动、复制、建立和查找节点?
.call() 和 .apply() 的区别?
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
jquery.extend 与 jquery.fn.extend的区别?
Jquery与jQuery UI 有啥区别?
jquery 中如何将数组转化为json字符串,而后再转化回来?
$.fn.stringifyArray = function(array) { return JSON.stringify(array) } $.fn.parseArray = function(array) { return JSON.parse(array) } 而后调用: $("").stringifyArray(array)
针对 jQuery 的优化方法?
如何判断当前脚本运行在浏览器仍是node环境中?(阿里)
jQuery 的 slideUp动画 ,若是目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
那些操做会形成内存泄漏?
JQuery一个对象能够同时绑定多个事件,这是如何实现的?
$("div").on("click mouseover", function(){});
$("div").on({ click: function(){}, mouseover: function(){} });
知道什么是webkit么? 知道怎么用浏览器的各类工具来调试和debug代码么?
检测浏览器版本版本有哪些方式?
//"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"
What is a Polyfill?
作的项目中,有没有用过或本身实现一些 polyfill 方案(兼容性处理方案)?
使用JS实现获取文件扩展名?
function getFileExtension(filename) { return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2); }
String.lastIndexOf()
String.prototype.slice()
Object.is() 与原来的比较操做符“ ===”、“ ==”的区别?
页面重构怎么操做?
网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变UI的状况下,对网站进行优化,在扩展的同时保持一致的UI
对于传统的网站来讲重构一般是:
表格(table)布局改成DIV+CSS
使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
对于移动平台的优化
针对于SEO进行优化
深层次的网站重构应该考虑的方面
减小代码间的耦合
让代码保持弹性
严格按规范编写代码
设计可扩展的API
代替旧有的框架、语言(如VB)
加强用户体验
一般来讲对于速度的优化也包含在重构中
压缩JS、CSS、image等前端资源(一般是由服务器来解决)
程序的性能优化(如数据读写)
采用CDN来加速资源加载
对于JS DOM的优化
HTTP服务器的文件缓存
列举IE与其余浏览器不同的特性?
什么叫优雅降级和渐进加强?
是否了解公钥加密和私钥加密
WEB应用从服务器主动推送Data到客户端有那些方式?
对Node的优势和缺点提出了本身的见解?
你有用过哪些前端性能优化的方法?
(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状态码有那些?分别表明是什么意思?
100 Continue 继续,通常在发送post请求时,已发送了http header以后服务端将返回此信息,表示确认,以后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功而且服务器建立了新的资源
202 Accepted 服务器已接受请求,但还没有处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且老是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器没法理解请求的格式,客户端不该当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未受权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最多见的服务器端错误。
503 Service Unavailable 服务器端暂时没法处理请求(多是过载或维护)
一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么?(流程说的越详细越好)
注:这题胜在区分度高,知识点覆盖广,再不懂的人,也能答出几句,而高手能够根据本身擅长的领域自由发挥,从URL规范、HTTP协议、DNS、CDN、数据库查询、 到浏览器流式解析、CSS规则构建、layout、paint、onload/domready、JS执行、JS API绑定等等
详细版:
一、浏览器会开启一个线程来处理这个请求,对 URL 分析判断若是是 http 协议就按照 Web 方式来处理;
二、调用浏览器内核中的对应方法,好比 WebView 中的 loadUrl 方法;
三、经过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;
四、进行HTTP协议会话,客户端发送报头(请求报头);
五、进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;
六、进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理;
七、处理结束回馈报头,此处若是浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;
八、浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;
九、文档树创建,根据标记请求所需指定MIME类型的文件(好比css、js),同时设置了cookie;
十、页面开始渲染DOM,JS根据DOM API操做DOM,执行事件绑定等,页面显示完成。
简洁版:
你用的驾轻就熟用的熟练地编辑器&开发环境是什么样子?
对前端工程师这个职位是怎么样理解的?它的前景会怎么样?
前端是最贴近用户的程序员,比后端、数据库、产品经理、运营、安全都近。
前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分,甚至更好
参与项目,快速高质量完成实现效果图,精确到1px;
与团队成员,UI设计,产品经理的沟通
作好的页面结构,页面重构和用户体验
处理hack,兼容、写出优美的代码格式
针对服务器的优化、拥抱最新前端技术
平时如何管理你的项目?
先期团队必须肯定好全局样式(globe.css),编码模式(utf-8) 等;
编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);
标注样式编写人,各模块都及时标注(标注关键样式调用的地方);
页面进行标注(例如 页面 模块 开始和结束);
CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);
JS 分文件夹存放 命名以该JS功能为准的英文翻译。
图片采用整合的 images.png png8 格式文件使用 - 尽可能整合在一块儿使用方便未来的管理
说说最近最流行的一些东西吧?常去哪些网站?
移动端(Android IOS)怎么作好用户体验?