记录第一次实习面试——前端工程开发师(字节跳动)

面试官是一个特别有耐心的小哥哥,超温柔,有的地方会引导我,虽然我表现很拉(前段时间学校在组织期末考试,考完试第一天就有一个小姐姐打电话通知我第二天面试,总共就准备了一天,唉,下次一定要好好准备www),但首次面试的体验还是不错的~

开始是问我的项目经历,我对哪个项目印象最深,项目的难点,哪个项目让我学到的东西最多等等,时间比较长也没来得及看记忆模糊,但幸好之前有准备好,但我印象深刻的只有我当时做项目遇到的那些难题,至于怎么解决的反而印象不深,反正就是各种找博客,看别人发的文章呗,当然还是要对自己的项目有充分的了解。

然后就是问我熟悉哪些技术栈,当然前端的基础是html+css+js,主要就考了这方面和es6的代码(但准备的时候一直在看面试的八股文,结果根本没问到,写代码的时候还是很生疏,花了挺长时间)

第一个题是html+css的布局样式,我第一次是用了relative+absolute(当时脑子里第一个想起来的就是整个,平时做项目也用的多),然后面试官问我还有没有其他思路,然后就提到了table布局、grid布局、flex布局(这些知道,但真的没怎么用过,感觉我项目里relative+absolute,偶尔来个浮动什么的就能搞定了,但总归是基础,认栽认栽)

第二个题是es6的题,让我写出代码运行结果,第三个当时我只知道它的结果是一个object类型的对象,没想到它是这样的格式

let fun1 = x => x;
let fun2 = x => { x };
let fun3 = x => ({ x });
console.log(fun1(1));//1
console.log(fun2(1));//undefined
console.log(fun3(1));//{x:1}

第三个是js的题,要求写一个函数,每次调用会返回一个素数,下一次调用的时候回返回这个素数后的下一个素数,要求这个函数没有参数,不能用全局变量(还是脑子空空~只写出了一半)

//判断一个数是否为素数,如果是返回true,不是则返回false
function isPrimne(num){
    if(num==0||num==1) return false;
    for(let i = 2;i <= Math.sqrt(num);i++){
        if(num%i === 0){//这个数不是一个素数
            return false;
        }
    }
    return true;
}
function sushu(){
    let n = 0;
    return ()=>{
        while(1){
            n++;
            if(isPrimne(n)){
                return n;
            }
        }
    }
}
//将sushu返回出去的函数赋给一个变量
const getPrimne = sushu()
//调用新的函数
console.log(getPrimne())//2
console.log(getPrimne())//3
console.log(getPrimne())//5

除了这个传统闭包的方法以外,还有使用迭代器和生成器函数的方法,这里也放出来,方便以后盘~

//使用迭代器(但这里定义的这个prime应该是全局变量吧)
var prime = {}
prime[Symbol.iterator] = function () {
    let num= 1;
    return {
        next() {
            while (true) {
                num++;
                if (isPrimne(num)) {
                    return num;
                }
            }
        }
    }
}
var getPrime2 = prime[Symbol.iterator]().next;
console.log(getPrime());//2
console.log(getPrime());//3
// 生成器函数,但这个我运行并没有输出下一个素数,每次输出都是2
function* primeGenerator() {
    let prime = 1;
    while (true) {
        prime++;
        if (isPrimne(prime)) {
            yield prime;//yield:暂停函数
        }
    }
}
var getPrime3 = primeGenerator().next().value
console.log(getPrime3);//2
console.log(getPrime3);//2

机会很好,是我没抓住www,下次一定要加油!

猜你喜欢

转载自blog.csdn.net/qq_62070939/article/details/128106708
今日推荐