前端时间因工作需要,整理了一套笔试题。
网上有许多套题,重复的比较多。出于笔试时间考虑,本文摘取16道,包含了CSS基本使用、时间绑定、定时器、存储、ajax和框架原理等内容。
题目偏简单,覆盖知识点勉强算全面。如果有更好的题目,也欢迎补充。
放着这里,希望能给正在准备面试的朋友们带来一点点价值。
div居中方法很多,这里仅列举其中一种:
div {
position:absolute;
width:200px;
height:200px;
top:50%;
left:50%;
margin-left:-100px;
height:-100px;
z-index:1000;
}
事件绑定,建议在写代码的时候尽量注意编程规范,尤其是语义规范。
注意: 避免出现 btn1,btn2 这样的不良语义命名。
Var _btnLeft = document.getElementById('btn-left');
Var _btnRight = document.getElementById('btn-right');
_btnLeft.addEventListener("click", left);
_btnRight.addEventListener("click", right);
function left(){
alert("left");
}
function right(){
alert("right");
}
有些任务或方法需要在一定时间后执行,或是间隔一定时间重复执行,这就需要定时器。
setTimeout
在预定长度的时间后执行只执行一次,如1秒(1000毫秒)后执行:
setTimeout(function(){ alert("Hello world"); }, 1000);
setInterval
以预定长度的时间为间隔重复执行,如每间隔1秒(1000毫秒)执行一次,重复执行:
setInterval(function(){ alert("Hello"); }, 1000);
相同点
都存储在客户端
不同点
(1) 存储大小
· cookie数据大小不能超过4k。
· sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
(2) 有效时间
· localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
· sessionStorage 数据在当前浏览器窗口关闭后自动删除。
· cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
(3) 数据与服务器之间的交互方式
· cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端
· sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
异步,不用刷新页面就能更新页面内容。
ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页。
很多程序员不喜欢原生,也不练习原生。但小编认为原生的编程能力一定程度上代表着造轮子的能力和对框架的理解、适应能力。
生产中为了节省开发效率和代码一致性,尽量不造轮子。但是,造轮子一时爽,一直造一直爽!
var xmlhttp;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else {
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/api/",true);
xmlhttp.send();
权重计算规则
五种基本类型:undefined、null、Boolean、Number和String。
null是javascript的关键字,可以认为是对象类型,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是javascript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。
javaScript权威指南: null 和 undefined 都表示“值的空缺”,你可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。
前端优化的途径有很多,按粒度大致可以分为两类,第一类是页面级别的优化,例如 HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等 ;第二类则是代码级别的优化,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等。另外,本着提高投入产出比的目的,后文提到的各种优化策略大致按照投入产出比从大到小的顺序排列。
PS:扩展下问题,gzip知道么?webpack怎么用?js怎么压缩?还有那些js压缩工具?
相同点
不同点
PS:扩展下,AngularJS了解么?jQuery呢?
MVC(Model-View-Controller)
MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVC使用非常广泛,比如JavaEE中的SSH框架
MVVM(Model-View-ViewModel)
如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应view。
px表示像素 (计算机屏幕上的一个点:1px = 1/96in),是绝对单位,不会因为其他元素的尺寸变化而变化;
em表示相对于父元素的字体大小。em是相对单位 ,没有一个固定的度量值,而是由其他元素尺寸来决定的相对值。
function leak(){
leak="xxx";//leak成为一个全局变量,不会被回收
}
栅格,百分比布局+媒体查询
PS:其他类似的框架了解么?比如layui?
-1事件冒泡:
通俗易懂的来讲,就是当一个子元素的事件被触发的时候(如onclick事件),该事件会从事件源(被点击的子元素)开始逐级向上传播,触发父级元素的点击事件。
-2 事件委托
事件委托,首先按字面的意思就能看你出来,是将事件交由别人来执行,再联想到上面讲的事件冒泡,是不是想到了?对,就是将子元素的事件通过冒泡的形式交由父元素来执行。