字节飞书前端一面(凉)

昨天下午面,今天上午就收到感谢信,新鲜热乎
【自身的问题】
确实,我想到什么之后就马上就开始写(最先想到的肯定是暴力)
但实际上呢,其实他们可能不太想看到暴力解法。。
应该尽量多想一会,想到更好的方法再去talk,这个也是坏毛病吧

八股文部分----------------------
上来没有问常规的,说大概面试半小时,先了解的是之前做过的项目部分,我开始觉得奇怪,因为之前字节确实有挂了十次实习简历才扔进去…… 就比较怂以为不是那么正式的面试,没想到后面写代码写太慢还是拖到了一个小时呜呜呜。
1、介绍了下项目经历,最有成就感的事情,讲了当时的刷新丢失问题
顺手问:localstorage和sessionstorage有什么区别,cookie呢,大概5-10m,永久保存,,,,
2、那讲一下你理解的登录(说了首先手机号的校验,会屏蔽掉字母汉字,保证登录合法,https发送请求,验证码比对,然后这边讲到了router的aftereach白名单校验
▽ 那么请问登录状态怎么保存?
项目里是用了js-token插件,下线的时候remove掉,感觉还是要靠token里的cookie保存
3、介绍了一下地图的那个uni-app项目。
有没有用到什么监听的部分?优化的地方?我不知道啊,都是根据业务来的,简单的讲了下自己
【要不要这么讲,是不是很减分??】
4、vue的双向绑定,object修改的时候给重写
(1)面试官补充了get setter
(2)观察者模式。不知道…… 死讲了一点
(3)那么get是在什么时候触发的?不知道,讲了下vitual dom,
那么<template>是怎么生成html页面的?
这里面试官:看着好像不太很会的亚子 这里开始有点破防 感觉要开始凉了QAQ
5、vue的通信机制 props、vuex,讲了下其他的
有没有自己封装过组件【*2上次也问了】, 你封装的那个也是props 去通信吗
6、讲一下promise 异步刷新
手写部分---------
和上次一样开了四个题
1、刚讲到promise的all和race,那么实现一下some吧 给个num判断返回了num个
【上次是写出来就行,这次其实还是要有要求的 细节上要完善:
(1)想要直接调用,那么promise.prototype(有点想这么写,我又没这么写=。= 一说我马上补上了
(2)判断传入的是否为promise(其实要.then 去判断,当时看了没有及时记录)
(3)想要返回的数组也能够按照顺序。最开始想排序,感觉作为数组不能一下子push两个进去。。就想暴力再赋值一遍,感觉还是不好。。最后他说跳过吧下一个,想了一个预先存好,最后一次再push进返回值的方法
自我感觉就顺序问题鹅已整体上还是能看的。。。吧。。</template>

Promise.prototype.some=function(promises,num){
    let cnt=0;
    let res=[];
    let list=[];
    return new Promise((resolve,reject)=>{
        if(num>promise.length){
                reject("length can't be fullilled")
        }
        for(let i=0;i<promises.length;i++){
            if(!(promise[i].then())){
                continue;
            }
            promises[i].then((data)=>{
                cnt++;
                res.push(data,i);
                list.push(i);
                if(cnt===num){

                   resolve(res);
                }
            }).catch(err=>{
                reject(err);
            })
        }
    })
}/

2、数组有什么方法,哪些是不改变原来数组的,那些是改变的
slice和splice的用法
讲了下reduce,并挪动了位置hhh
slice map concat fliter toString reduce// bu
splice push shift unshift // yes
var a=new Array();
3、输出结果题,这个说错了15551 我说的是2 2 12 实际上应该2 undefined*3

const a=1
const obj={
    a:2,
    show1:function(){
        console.log(this.a)
    },
    show2:()=>{
        console.log(this.a)
    },
}

obj.show1()
obj.show2()

const func1=obj.show1
const func2=obj.show2
func1()
func2()

4、算法题 反转字符串,按单词顺序反转
如 i am qwa1==> i ma 1awq。不是单纯的倒转就好了 一开始没仔细读题……【这毛病什么时候能改改】,随手写个o(n)的发现反转不对,就在基础上补了o(n2),果然复杂度太高,又说了indexof。。
然后边写边想 了o(n),所以为什么我还是写的那么慢,呜呜呜。虽然这题是medium,但根据我上次的经验还是比较凉凉
算法总体用时 10-12分钟吧。promise那个题浪费时间比较多。。

function solve(s){
    let ans=''
    let tmp=" "
    let prev=0;
    for(let i=s.length-1;i>=0;i--){
        if(s[i]===' '){
            ans=" "+tmp+ans;
            tmp='';
        }
       else
           tmp=tmp+s[i];
   }
    ans=tmp+ans;
    return ans;
}
console.log(solve("let's take ccc"))

这题是leetcode 557的easy!开始看错了以为是151 啊啊啊
反问环节,问了地址,北京和深圳是不接受吗。。问了能实习多久,这个学期是一定可以保证的,后面也可以(面试官:怎么听着那么虚,好像骗人一样hhh 我:这不是觉得自己要凉了吗,你要是给我过了我实习到毕业)
业务线,飞书人力套件,会有小程序,企业应用等等
学习建议,夯实基础。。


some复盘
饿,作用域链这一块还是没好好看,昨天没补好。。呜呜,作用域链和块级作用域是不同的。obj是对象,那么函数才能有上下文环境,,,,所以箭头函数这边是没得,但想不通为啥全局没有呢?
那么就是作用域那题几乎完全答错了(函数这块专门看了。。。就前不久,脑子蒙了),其他的好歹也是写的还看的过去,大问题没有小问题很多,然后八股这里因为问的比较少和深,再深入的我是不了解的,所以可能就比较↓了,哎,又失败了。。以为实习会比校招简单,换现在的我去答上一次面字节的题肯定比当时答的好多了,所以说即使是15分钟↓内写出算法题也不稳啊,和算法题咩啥关系

#面经##字节跳动#
全部评论
这里箭头函数的this指向window,但是const和let声明的变量不会赋值给顶层对象window,所以window.a就是undefined了,es6后顶层对象和全局对象就分开了
1 回复
分享
发布于 2021-10-25 11:13
写的好棒!我下周也要面飞书了,感谢楼主😆
点赞 回复
分享
发布于 2021-10-22 16:32
滴滴
校招火热招聘中
官网直投
Promise.some是啥?没听过啊
点赞 回复
分享
发布于 2021-11-02 10:02
Promise.prototype.some 之后真的可以直接用吗  需要new 一下吧
点赞 回复
分享
发布于 2022-02-13 18:03

相关推荐

8 50 评论
分享
牛客网
牛客企业服务