ReactNative面试题--竞技世界(北京)网络技术有限公司

今天去竞技世界面试了ReactNative工程师,已经有一段时间没写过RN了,本以为都会和RN相关,结果RN方面只面试了一道描述RN生命周期的题目,其他题目都是考的js基础知识,下面是我印象里记起来的面试题,都是很经典的题目啊,值得一看(答案如有不对的地方欢迎指正)

1、
var a = [];
for(let i = 0; i < 10; i++){
    a[i] = function () {
        console.log(i);
    }
}
a[6]();

//输出结果:6
//这个题考的匿名函数,
//for循环是给每个数组元素赋予相对应的匿名函数:a[0] = function(){console.log(0)}、a[1] = function(){console.log(1)}、a[2] = function(){console.log(2)}...a[9] = function(){console.log(9)};但是此时函数都没有被调用,只有被调用用函数才会执行;
//当调用 a[6]()这个匿名函数时,会调用a[6] = function(){console.log(6)};所以打印的是 6;
2、
var tmp = new Date();
function f() {
    console.log(tmp);
    if(false){
        var tmp = "Hello world";
    }
}
f();
//输出结果:undefined
//这个涉及到变量提升的问题,以上代码相当于
function f() {
    var tmp;
    console.log(tmp);
    if(false){
        tmp = "Hello world";
    }
}
//虽然if语句为假,但是tmp变量存在就会提升
3、
var name  = "Hello A!";
var objects = {
    name : "Hello B!",
    getNameFunc : function(){
        var that = this;
        return function(){
            return that.name;
        }
    }
}
let a =  objects.getNameFunc()();
console.log(a);
//输出结果 Hello B;
//this作用域指向objects;
4.进程和线程的定义区别
5.内存分配方式以及它们的区别
6.编写一个递归函数,传入两个值,求出最大公约数;
答案:
//最大公约数
function gcd( x ,  y){  
     var max,min,temp;  
     max = x > y ? x : y ;  
     min = x < y ? x : y ;  
     while( max % min ){  
        temp = max % min;  
        max = min;  
        min = temp;  
    }  
     return min;  
}
//通过递归实现
function digui(m , n){
     return m%n==0?(n):(digui(n,m%n));
}
7.编写一个函数,得到字符串中不重复的最大长度;
例如:"ababcdcd" 最大不重复字符串为:"abcd",长度为4
        "qwwekw" 最大不重复字符串为: "wek",长度为3
时间复杂度为O(0)
答案:
    var newStr = "";
    function f1 (str,indexs = 0){
        var tempStr = "";
        for(let i=indexs;i newStr.length){
                    newStr = tempStr;
                }
                
                tempStr = '';
                f1(str,i);
            }
        }
    }

    f1('qwwekw');
    console.log('newStr:',newStr.length);

你可能感兴趣的:(ReactNative面试题--竞技世界(北京)网络技术有限公司)