前端需要记住的一些基础问题
最近在面试,一些公司会有笔试题,有些自己确实做的不好,所以把它记录下来,巩固复习。
部分没有完善,抽时间回来补充
怎样实现a对象可以调用b对象的方法?
考的是继承,b要有a的方法,继承有3种
function classA(name) {
this.name = name;
this.showName = function() {
alert(this.name);
}
}
function classB(name) {
classA.call(this, name);
}
var oB = new classB("Black Cat");
oB.showName(); // Black Cat
h5有哪些新标签
header, nav, section, article, aside, footer, details, summary
header |
定义文档或节的页眉 |
nav |
定义导航链接的容器 |
section |
定义文档中的节 |
article |
定义独立的自包含文章 |
aside |
定义内容之外的内容(比如侧栏) |
footer |
定义文档或节的页脚 |
details |
定义额外的细节 |
summary |
定义 details 元素的标题 |
<!DOCTYPE> 的作用
定义文档的类型,让浏览器正确地显示文档(html5: <!DOCTYPE html>)
表单元素
Input, textarea, option, select , button (html5新增:datalist, keygen, output)
Html5新增的input输入类型
- color
- date
- datetime
- datetime-local
- month
- number
- range
- search
- tel
- time
- url
- week
html5新特性
- 新的语义元素,比如 <header>, <footer>, <article>, and <section>。
- 新的表单控件,比如数字、日期、时间、日历和滑块。
- 强大的图像支持(借由 <canvas> 和 <svg>)
- 强大的多媒体支持(借由 <video> 和 <audio>)
- 强大的新 API,比如用webstorage(本地存储) 取代 cookie。
数组去重的实现
方法一:用是indexOf方法:
var arr = [1, 2, 3, 4, 4, 1, 21, 3, 12, 3, 4, 5324, 234, 3, 2, 1, 3]
function unique(res) {
var result = [];
for (var i = 0; i < res.length; i++) {
if (result.indexOf(res[i]) == -1) {
result.push(res[i])
}
}
return result;
}
console.log(unique(arr));
方法二:
var arr2 = [1,2,4,5,3,2,1,3,4,2,4,5,4,234];
var o = {};
var resultArr = [];
for(var i=0;i<arr2.length;i++){
if(!o[arr2[i]]){
resultArr.push(arr2[i]);
o[arr2[i]] = 2
}
}
console.log(resultArr)
js实现clone方法,对5中数据类型进行复制
function clone(obj) {
var o;
if (typeof obj == "object") {
if (obj === null) {
o = null;
} else {
if (obj instanceof Array) {
o = [];
for (var i = 0, len = obj.length; i < len; i++) {
o.push(clone(obj[i]));
}
} else {
o = {};
for (var j in obj) {
o[j] = clone(obj[j]);
}
}
}
} else {
o = obj;
}
return o;
}
说说对gulp的了解
记住5个API
gulp.tesk() // 定义任务
gulp.src() // 获取流(虚拟的文件对象流),有路径,文件名,内容等信息
gulp.dest() // 输出文件(写文件)
gulp.watch() // 监听文件变化
gulp.run() // 用来执行任务
// pipe() 管道
Git版本管理的常用命令
回头来整理他们各自的作用
git add .
git checkout xxx
git commit –m xxx
git push origin master
git pull origin master
git branch
git checkout –b xxx / git checkout xxx
git merge xxx
360金融笔试题
写在前面:有些题目自己还觉得是面试官出的题目有问题呢,实际上并不是,只是都有他的目的。
1.随便列举4个或多个BOM对象
1、window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性;
2、document对象,文档对象;
3、location对象,浏览器当前URL信息;
4、navigator对象,浏览器本身信息;
5、screen对象,客户端屏幕信息;
6、history对象,浏览器访问历史信息;
2.img元素的alt和title的异同
alt属性和title属性的区别是前者是在图片无法加载的时候才会显示的其值,而title是在图片正常加载鼠标划上去显示的值,虽然alt也有后者的功能,但是只是在低版本的ie浏览器才支持,高版本及标准浏览器不支持这个 功能了。
3.Javascript有哪几种数据类型
基本类型:String Number Boolean Null undefined
引用类型:Object
4.下面这段的执行结果
<script>
var a = 1,b = 0;
<!--
b = 2;
-->
if(a<b) alert('a is smaller');
else slert('b is smaller')
</script>
结果:弹出a is smaller
5.说出下面脚本的执行结果,并说明原因
var a;
if(a == undefined) alert('undefined');
if(a == null) alert('null')
结果:先弹出 undefined。关闭后再弹出 null。原因:这里“==”会强制类型转换,a声明了,但未定义,所以a是undefined, 而undefined == null也返回true,所以两个alert都会执行
6.下面脚本的执行结果:
考的是进制的问题,这块自己需要去加强
var x = 011, y= 0x10, z= 1.2e2;
alert(x+y+z)
结果:145 (9+16+120)
7.下面脚本的执行结果:
var a=1,b=2;
function c(){
alert('c1')
}
function test(){
alert(a);
alert(b);
c();
function b(){
return 0
}
var a=5,b=6;
function c(){
alert('c2')
}
}
test();
弹出undefined
弹出:function b(){
return 0
}
弹出:c2
8. 下方脚本能正确alert出2吗?如果不行,怎么解决?
for (var i = 0, l = 10, obj = []; i <= l; i++) {
obj[i] = function() {
alert(i);
}
}
obj[2]()
结果:不能,alert的是11,解决方案是利用闭包
for (var i = 0, l = 10, obj = []; i <= l; i++) {
(function(i) {
obj[i] = function() {
alert(i);
}
})(i)
}
obj[2]()
9. 说出下方脚本的执行结果
var array = [1,2];
deal(array, array);
function deal(arrA, arrB){
arrA = [3,4];
console.log(array[1]); // 2
arrB[1] = 9; // arrB[1] = 9, arrB为[1,9] arrB是array引用,array为[1,9]
console.log(array[1]); // 9
}
结果:// 2 // 9