记一次字节面试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaoming1992
V2EX    前端开发

记一次字节面试

  •  
  •   xiaoming1992 2021-06-20 16:26:36 +08:00 2696 次点击
    这是一个创建于 1657 天前的主题,其中的信息可能已经有所发展或是发生改变。

    记一次字节面试

    去年面了一次字节, 答得比较菜, 挂了; 前两天接到了字节 hr 的电话, 问我的情况, 我说我刚入职了某个厂子, 他说没关系, 也可以试试嘛, 我想也对, 就接受了视频面试。

    面试自我介绍不必说, 面试官问我, 你这刚入职怎么就想跳槽呢? 我可能太耿直了, 说其实是你们 hr 联系我的...

    然后面试官给我的感觉就是, 整个面试过程特别急切, 当然我也比较菜, 一问三不知...

    我说我 typescript 和 react 和 webpack 比较熟悉, 所以问题如下:

    1. typescript 中 string 和 String 的区别

      • 答: 一个是 ts 的类型, 一个是 js 原生构造类型
    2. react hooks vs class, 为什么官方推荐用 hooks

      • 答: 不知道, 没怎么用过 class(我用 react 的时候已经不推荐用 class 了, 所以基本没用过 class), 猜是方便组织代码, 用了 useEffect 举例, 因为 hooks 可以将逻辑放在一起方便管理
    3. 浏览器缓存

      • 答: 自我感觉答得还行吧, 前两天刚看的, 就是强制缓存、协商缓存这些(问我协商缓存如果服务器内容改变了返回什么, 我说忘了 302 还是 304 了, 他就说, 再确定一下; 我说需要用了临时去查嘛; 感觉有点莫名其妙...)
    4. 介绍 https

      • 答: 不熟悉...
    5. react 事件代理

      • 答: 我猜是在问 react 将事件委托到 document 还是 body 上, 然后问我为什么这么做, 我就说应该是出于性能的考虑, 因为事件绑定和解绑比较消耗性能, 所以由 react 监听 document 然后统一分配事件处理
    6. 15 分钟实现一个 EventEmit

      • 代码在最下面, 稍微有点问题, 由于需要实现 once, 使用 isOnce 和 disabled 屏蔽掉 once 的事件监听。 而 listeners 移除时机不好确定, 不能在循环中移除监听, 所以反正写的就是下面这样, 面试官指出来了, 我也承认有这些问题, 并说可以在特定的时机移除掉 disabled 的监听

    整个面试过程持续 41 分钟, 挂断后 5 分钟告诉我挂了... 总的来说, 个人比较菜, 算一次不怎么愉快的面试吧.

    interface Handler { name: string; callback: Function; /** * 默认 false */ isOnce?: boolean; /** * 默认 false */ disabled?: boolean; } class Event { listeners: Handler[] = [] on(name, callback) { this.listeners.push({ name, callback, }) return this } off(name, callback) { if (callback) { this.listeners = this.listeners.filter((item) => ( (item.name !== name) || (item.callback !== callback) )) return this } this.listeners = this.listeners.filter((item) => (item.name !== name)) } once(name, callback) { this.listeners.push({ name, callback, isOnce: true, }) return this } emit(name, value) { const listeners = this.listeners.filter((item) => (item.name === name) && (!item.disabled)) for (let i = 0, len = listeners.length; i < len; i += 1) { const listener = listeners[i] listener.callback(value) if (listener.isOnce) { listener.disabled = true } } } } 
    6 条回复    2022-02-07 00:42:42 +08:00
    WhoMercy
        1
    WhoMercy  
       2021-06-20 17:23:32 +08:00 via Android
    kpi 面
    xiaoming1992
        2
    xiaoming1992  
    OP
       2021-06-20 17:32:42 +08:00
    @WhoMercy 嗯嗯,应该是 hr 的 kpi, 面试官被耍不爽吧
    gxm44
        3
    gxm44  
       2021-07-16 10:46:02 +08:00
    listeners: Handler[] = []

    用 object 会不会更好些?
    xiaoming1992
        4
    xiaoming1992  
    OP
       2021-07-16 18:40:15 +08:00
    @gxm44 你的意思是像下面这样吗?感觉这样子遍历起来不方便啊

    ``` typescript
    listeners: {
    ____[key in string]: Handler[];
    }
    ```
    ericgui
        5
    ericgui  
       2022-02-04 16:28:59 +08:00
    KPI 面是什么情况

    我最近也遇到一个 KPI 面试,也没下文了,感觉像是 KPI
    xiaoming1992
        6
    xiaoming1992  
    OP
       2022-02-07 00:42:42 +08:00
    @ericgui 应该就是 hr 为了完成 kpi 吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2469 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:31 PVG 16:31 LAX 00:31 JFK 03:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86