前端面试题汇总:基础篇2

建议你们每一道题都要画图(尤为是复杂一些的题目),画图过程能让咱们把基础知识掌握的更加扎实,并且更加有效的算出正确的答案javascript

先本身计算,都完成后在开始测试答案,千万不要直接的输出看答案,这样就没有意义了html

1、选择题

一、java

console.log(a); 
var a=12; 
function fn(){
	console.log(a); 
	var a=13;	
}
fn();   
console.log(a);

/* A、undefined 12 13 B、undefined undefined 12 C、undefined undefined 13 D、有程序报错 */
复制代码

二、node

console.log(a); 
var a=12;
function fn(){
	console.log(a);
    a=13;
}
fn();
console.log(a);

/* A、undefined 12 13 B、undefined undefined 12 C、undefined undefined 13 D、有程序报错 */
复制代码

三、面试

console.log(a);
a=12;
function fn(){
	console.log(a);
	a=13;	
}
fn();
console.log(a);

/* A、undefined 12 13 B、undefined undefined 12 C、undefined undefined 13 D、有程序报错 */
复制代码

四、json

var foo=1; 
function bar(){
    if(!foo){
        var foo=10; 
    }
    console.log(foo); 
}
bar();

/* A、1 B、10 C、undefined D、报错 */
复制代码

五、无需画图闭包

var n=0; 
function a(){
	var n=10; 
	function b(){
		n++; 
	    console.log(n); 
    }
    b();
    return b; 
}
var c=a();
c(); 
console.log(n);


/* A、1 1 1 B、11 11 0 C、11 12 0 D、11 12 12 */
复制代码

六、函数

var a=10,b=11,c=12;
function test(a){
     a=1;
     var b=2;
     c=3;
}
test(10);
console.log(a);  
console.log(b);   
console.log(c);

/* A、1 11 3 B、10 11 12 C、1 2 3 D、10 11 3 */
复制代码

七、测试

if(!("a" in window)){
   var a=1;
}
console.log(a);

/* A、1 B、undefined C、报错 D、以上答案都不对 */
复制代码

八、ui

var a=4;
function b(x,y,a) {	   
     console.log(a); 
     arguments[2]=10;        
     console.log(a); 
}
a=b(1,2,3);   
console.log(a); 

/* A、3 3 4 B、3 10 4 C、3 10 10 D、3 10 undefined */
复制代码

九、

var foo='hello'; 
(function(foo){
   console.log(foo);
   var foo=foo||'world';
   console.log(foo);
})(foo);
console.log(foo);

/* A、hello hello hello B、undefined world hello C、hello world world D、以上答案都不正确 */
复制代码

十、需画图

var a=9; 
function fn(){ 
	a=0; 	   
    return function(b){ 
	    return b+a++; 
    }    
}
var f=fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);

/* A、6 6 7 2 B、5 6 7 3 C、5 5 6 3 D、以上答案都不正确 */
复制代码
2、问答题(须要画图)

一、

var ary=[1,2,3,4];
function fn(ary){
	ary[0]=0;    
	ary=[0];    
	ary[0]=100;    
	return ary; 
}
var res=fn(ary);    
console.log(ary);    
console.log(res);
复制代码

二、

function fn(i) {
    return function (n) {
        console.log(n + (i++));
    }
}
var f = fn(10);
f(20);
fn(20)(40);
fn(30)(50);
f(30);
复制代码

三、

var i = 10;
function fn() {
    return function (n) {
        console.log(n + (++i));
    }
}
var f = fn();
f(20);
fn()(20);
fn()(30);
f(30);
复制代码

四、无需画图

var test = (function(i){
    return function(){
        alert(i*=2);
    }
})(2);
test(5);
复制代码

五、

var a=1;
var obj ={
   "name":"tom"
}
function fn(){
   var a2 = a;
   obj2 = obj;
   a2 =a;
   obj2.name =”jack”;
}
fn();
console.log(a);
console.log(obj);
复制代码

六、无需画图

var a = 1;
function fn(a){
    console.log(a)
    var a = 2;
    function a(){}
}
fn(a)
复制代码

七、

var a=0,
	b=0;
function A(a){
	A=function(b){
    	alert(a+b++);
	};
    alert(a++);
}
A(1);
A(2);
复制代码
三:附加思考题(面试题)

一、如下代码的功能是要实现为5个input按钮循环绑定click点击事件,绑定完成后点击一、二、三、四、5五个按钮分别会alert输出0、一、二、三、4五个字符。(腾讯)

  • 请问以下代码是否能实现?
  • 若是不能实现那么如今的效果是什么样的?
  • 应该作怎样的修改才能达到咱们想要的效果,并说明原理?
<div id="btnBox">
	<input type="button" value="button_1" />
    <input type="button" value="button_2" />
    <input type="button" value="button_3" />
    <input type="button" value="button_4" />
    <input type="button" value="button_5" />
</div>

<script type="text/javascript"> var btnBox=document.getElementById('btnBox'), inputs=btnBox.getElementsByTagName('input'); var l=inputs.length; for(var i=0;i<l;i++){ inputs[i].onclick=function(){ alert(i); } } </script>
复制代码

二、document.parentNode 和 document.parentnode 的区别?(腾讯)

三、你理解的闭包做用是什么,优缺点?(乐视)

四、简述let和var的区别

  1. 写出下面代码输出结果

    var num = 10;
    var obj = {num: 20};
    obj.fn = (function (num) {
        this.num = num * 3;
        num++;
        return function (n) {
            this.num += n;
            num++;
            console.log(num);
        }
    })(obj.num);
    var fn = obj.fn;
    fn(5);
    obj.fn(10);
    console.log(num, obj.num);
    复制代码
  2. 写出下面代码输出结果

    var fullName='language';
    var obj={
    	fullName:'javascript',
    	prop:{
    		getFullName:function(){
    			return this.fullName;
    		}
    	}
    };
    console.log(obj.prop.getFullName());
    var test=obj.prop.getFullName;
    console.log(test());
    复制代码
    var name='window';
    var Tom={
    	name:"Tom",
    	show:function(){
    		console.log(this.name);
    	},
    	wait:function(){
    		var fun=this.show;
    		fun();
    	}
    };
    Tom.wait();
    复制代码
  3. 腾讯面试题

    function fun(){
    	this.a=0;
    	this.b=function(){
    		alert(this.a);
    	}
    }
    fun.prototype={
    	b:function(){
    		this.a=20;
    		alert(this.a);
    	},
    	c:function(){
    		this.a=30;
    		alert(this.a)
    	}
    }
    var my_fun=new fun();
    my_fun.b();
    my_fun.c();
    复制代码
  4. 怎么规避多人开发函数重名的问题?(百度搜索)

  5. 360面试题

    window.val=1; 
    var json={ 
        val:10, 
        dbl:function(){ 
            this.val*=2; 
        } 
    } 
    json.dbl(); 
    var dbl = json.dbl; 
    dbl(); 
    json.dbl.call(window); 
    alert(window.val + json.val);
    复制代码
    (function(){
        var val =1;
        var json ={
              val:10,
              dbl:function(){
                val*=2;
              }
        };
        json.dbl();
        alert(json.val+val);
    })();
    复制代码
    function C1(name){
        if(name) {
        	this.name = name;
        }
    }
    function C2(name){
        this.name =name;
    }
    function C3(name){
        this.name = name ||'join';
    }
    C1.prototype.name='Tom';
    C2.prototype.name='Tom';
    C3.prototype.name='Tom';
    alert((new C1().name)+(new C2().name)+(new C3().name));
    复制代码
  6. 滴滴面试题

    var foo = {
      bar: function () {
        console.log(this);
      }
    };
    foo.bar(); 
    (foo.bar)(); 
    复制代码
相关文章
相关标签/搜索