** 参考资料:学姐的ppt、我要去哪儿2016暑期实习生笔试题、及各种资料 (题和答案日后陆续补充……欢迎讨论)**
题目考点:
<br />
(来自LJ学姐整理)
- html标签、经典html布局
- DOM操作(插入/修改/删除)
- 盒模型(padding、margin区别,怪异模式下盒模型有什么不同)
参考 - js数据类型以及数据类型之间的区别
- 事件处理(捕获,冒泡事件……)
- 闭包
- 原型链,内存和作用域相关知识
- js实现类和继承
- this关键字
- MVC框架
- js自带的引用类型(Array, Date)
- 面向对象程序设计
- http(https)/cookie/session/Ajax
- 前端安全问题(XSS/CSRF/cookie劫持)
- js延迟加载和异步加载的区别,各自实现方法?
- 如何解决跨域问题?
- .call()和.apply()的作用,他们的区别是什么?
- this在不同场景下的指向
- 性能优化有哪些方法?
- js怎样怎样实现类和继承(代码)?
- 盒模型的定义是什么?
- HTML经典布局怎么实现?
- 谈谈你对闭包、原型链的理解
- ajax的实现。原生js实现ajax
- 谈谈浮动的理解
- 你遇到过哪些浏览器兼容问题,如何解决?
- css优先级
更多:点击这里
<br />
(2016.5.5 “我要去哪儿(注意非去哪儿网)前端笔试题节选”)
- js运算符优先级
- 执行后结果是__
2
__.
var text="\u03a3O";
console.log(text.length);
Key:\unnnn以十六进制代码nnnn表示的一个Unicode字符(n取值 0~F),/u03a3表示希腊字符“Σ”
\xnn 以十六进制代码nn表示的一个字符(n取值 0~F),/x41表示“A”
- 执行后,alert出的结果是
517
.
if ( !( "a" in window ) ){
var a = "517Na.com";
}else{
var b = "517";
}
alert (a || b);
解释见下一题
-
执行后,alert出的结果是__.
if('a' in window) {
var a = 10;
}
alert(a);
答案:10function和var会提前声明,而其实{…}内的变量也会提前声明。 于是代码还没执行前,a变量已经被声明,于是 ‘a’ in window 返回 true,a被赋值。
- css中,a:hover必须置于 ( )和( )之间才有效?(考察伪类顺序)
四个伪类顺序:写在后面的会悔改前面的
a:link a标签还未被访问的状态;(常态)
a:visited a标签已被访问过的状态;(常态)
a:hover 鼠标悬停在a标签上的状态;(即时状态)
a:active a标签被鼠标按着时的状态;(即时状态)
记忆方法:顺序是“LVHA”。
- typeof(null)=
object
typeof(undefined)=undefined
- arr.length= ( 6 ), arr[5].length = ( 0 ),
<script type="text/javascript">
var arr=[1,'517na',true,[1,2,3,4]];
arr[5]=function(){alert('Welcome to our family~');}
</script>
- 在javascript代码前面加上“javascript:”,输在浏览器地址栏中,回车可执行。比如:javascript:alert("hello");
随时补充 :
-
下面代码运行结果:?
if( 10 > 9 >8 == true) {
console.log('html5');
} else {
console.log('css3');
}*key*: 输出css3,先比较10和9,10>9成立,返回true,true和8比较, 此时出现数据类型转换,true转换成1再和8比较,1<8,所以返回false, 最后false和true不相等,所以返回false
-
下面代码运行结果:?
var obj = {};
obj.name = 'first';
var peo = obj;
peo.name = 'second';
console.log(obj.name);*key*:输出second;关于变量类型,分为了两大类,一种是引用类型, 一种是值类型,值类型相当于是重新创建了一个空间,然后将内容复制了 一份放置到了空间当中。引用类型相当于是重新创建了一份地址,两个地 址(obj和peo)都是指向一个存储空间的,那么此时修改任意一个都会对 另一个造成影响。
-
写一段程序,数组去掉重复数字
Demo1.
实现思路:获取没重复的最右一值放入新数组。
(检测到有重复值时终止当前循环 同时进入顶层循环的下一轮判断)
// 思路:获取没重复的最右一值放入新数组
function unique5(array){
var r = [];
for(var i = 0, l = array.length; i < l; i++) {
for(var j = i + 1; j < l; j++)
if (array[i] === array[j]) j = ++i;
r.push(array[i]);
}
return r;
}Demo2.
实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。indexOf方法在IE8及以下不支持。function unique3(array){ var n = [array[0]]; //结果数组
//从第二项开始遍历
for(var i = 1; i < array.length; i++) {
if (array.indexOf(array[i]) == i) n.push(array[i]);
}
return n;
}
...
未完待续。。。