闲了就刷面试题

1,081 阅读5分钟

第一篇

  1. 写出下面代码输出的结果
console.log(a);
var a = 12;
a = 13;
console.log(a);
console.log(a);
let a = 12;
a = 13;
console.log(a);
console.log(a);
a = 13;
console.log(a);
  1. 写出下面代码输出的结果
var a = 12;
var a = 13;
console.log(a);
let a = 12;
let a = 13;
console.log(a);
  1. 写出下面代码输出的结果
console.log(a, b);
var a = 12,
   b = 12;
function fn() {
   console.log(a, b);
   var a = b = 13;
   console.log(a, b);
}
fn();
console.log(a, b);
  1. 写出下面代码输出的结果
console.log(a, b, c);
var a = 12,
   b = 13,
   c = 14;
function fn(a) {
   console.log(a, b, c);
   a = 100;
   c = 200;
   console.log(a, b, c);
}
b = fn(10);
console.log(a, b, c);
  1. 写出下面代码输出的结果
console.log(a);
if(!('a' in window)){
   var a = 13;
}
console.log(a);
  1. 写出下面代码输出的结果
fn();
function fn(){ console.log(1); }
fn();
function fn(){ console.log(2); }
fn();
var fn = function(){ console.log(3); }
fn();
function fn(){ console.log(4); }
fn();
function fn(){ console.log(5); }
fn();
  1. 写出下面代码输出的结果
f = function () {return true;}
g = function () {return false;}
~function () {
    if (g() && [] == ![]) {
        f = function () {return false;}
        function g() {return true;}
    }
}();
console.log(f());
console.log(g());
  1. 写出下面代码输出的结果
console.log(typeof a);
console.log(typeof a);
let a;
  1. 写出下面代码输出的结果
var ary = [12, 23];
function fn(ary) {
    console.log(ary);
    ary[0] = 100;
    ary = [100];
    ary[0] = 0;
    console.log(ary);
}
fn(ary);
console.log(ary);
  1. 写出下面代码输出的结果(如何查找上级作用域和堆栈内存释放问题)
var n = 1;
function fn() {
    var n = 2;
    function f() {
        n--;
        console.log(n);
    }
    f();
    return f;
}
var x = fn();
x();
console.log(n);
var i = 5;
function fn(i) {
    return function (n) {
        console.log(n + (++i));
    }
}
var f = fn(1);
f(2);
fn(3)(4);
fn(5)(6);
f(7);
console.log(i);
var i = 20;
function fn() {
    i-=2;
    return function (n) {
        console.log((++i)-n);
    }
}
var f=fn();
f(1);
f(2);
fn()(3);
fn()(4);
f(5);
console.log(i);

--分割-- 休息一下吧, 第二篇

一、选择题

1、

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、有程序报错
*/

2、

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、有程序报错
*/

3、

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、有程序报错
*/

4、

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

/*
 A、1     
 B、10     
 C、undefined    
 D、报错
*/

5、无需画图

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
*/

6、

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
*/

7、

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

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

8、

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
*/

9、

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、以上答案都不正确
*/

10、需画图

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、以上答案都不正确 
*/
二、问答题

1、

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);

2、

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

3、

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

4、无需画图

var test = (function(i){
    return function(){
        alert(i*=2);
    }
})(2);
test(5);

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);

6、

var a = 1;
function fn(a){
    console.log(a)
    var a = 2;
    function a(){}
}
fn(a)

7、

var a=0,
	b=0;
function A(a){
	A=function(b){
    	alert(a+b++);
	};
    alert(a++);
}
A(1);
A(2);

第三篇 加油

  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)(); 
    

第四篇

let n = {
	name:'html'
};
let m = n;
n.teacher = n = {
    name:'css'
};
m.teacher = {
	name:'js'
};
console.log(m.name);
console.log(n.name);
console.log(m.teacher.name);
console.log(n.teacher.name);

7.写出下面代码输出的结果

let num = Number('12.5px');
let type = typeof num;
if (num == NaN) {
    alert(NaN);
} else if (type === 'number') {
    alert('number');
} else if (num == 12.5) {
    alert(12.5);
} else {
    alert('12.5px');
}

8.写出下面代码的输出结果

console.log(1 + false + undefined + [] + null + true + '珠峰培训' + [12] + 1);

let i=1;
console.log(2-(i++)+(--i)+2+(++i)-(i--)-2);
console.log(i);

9.写出下面代码的输出结果

for (var i = 10; i >= 2; i--) {
    if (i === 6) {
        i-=2;
        break;
    } else if(i<=5) {
        i=2;
    } else {
        i-=2;
        continue;
    }
    i--;
    alert(i);
}
alert(i);

10.写出下面代码的输出结果

Number("");

parseFloat("")

!!"parseInt(NaN)";

!typeof typeof typeof [12,23];

parseFloat("1.6px") + parseInt("1.2px");

typeof "parseInt(undefined)" + 12 + !!Number('');

typeof !!parseInt(undefined) + !parseFloat(null);