【秋招】字节商业化技术面经 已意向


一面

  • 项目
  • react15 16 差异 生命周期的变化以及为什么会变?react fiber
  • 微前端
  • css样式隔离怎么做(css in js、 bem 、shadow dom)
  • position定位
  • 跨域解决方案、同源策略
  • 正向代理、反向代理
  • 实现一个防抖函数 function debounce() {},资源竞态的情况怎么处理?
  • 节流
  • console.log(1)
    setTimeout(() => {
    console.log(2)
    }, 0)
    async function echo() {
    console.log(5)
    await Promise.resolve()
    console.log(6)
    }
    echo()
    requestAnimationFrame(() => {
    console.log(8)
    })
    new Promise((resolve) => {
    console.log(3)
    resolve()
    }).then(() => {
    console.log(4)
    })
    console.log(7)
    1 5 3 7 6 4 8 2
    

  • 二面

  • 实验室是什么
  • 如何学习前端
  • 学习前端看了哪些书
  • 实习做了什么事情
  • 简单讲讲对 hooks 的理解
  • Hooks 如何模拟类组件生命周期
  • 实现 useMemo
  • 实现 useScroll
  • css 权重如何计算
  • dom事件流
  • addEventLisenter的第三个参数
  • Ts 泛型
  • 	
    function geykey<T>(o:T,key: keyof T){
    return o[key]
    }
  • 阿里实习项目
  • var obj = {
    foo() { console.log(this) },
    bar: () => { console.log(this) },
    [window]: window
    }
    console.log(Object.keys(obj))
    obj.foo()
    obj.bar.call(navigator)

三面

  • 自我介绍
  • 介绍一个自己觉得能体现自己的技术的项目
  • js对象数组去重
    	
    // 判断对象是否相等
    const ans = [];
    const map = new Map();
    arr.forEach((item) => {
    const key = JSON.stringify(item);
    if (!map.has(key)) {
    ans.push(item);
    map.set(key, 1);
    }
    });
    return ans;
    // 引入判断两个对象是否相等
    // 判断对象是否相等
    const objIsEq = (obj1, obj2) => {
    if(Object.keys(obj1).length!== Object.keys(obj2).length) return false;
    if (obj1 instanceof Object && obj2 instanceof Object) {
    const keys = Object.keys(obj1);
    // 递归判断
    return keys.every((key) => objIsEq(obj1[key], obj2[key]));
    }
    if (obj1 === obj2) {
    return true;
    }
    return false;
    };
    /*
    * @param x {Object} 对象1
    * @param y {Object} 对象2
    * @return {Boolean} true 为相等,false 为不等
    */
    var deepEqual = function (x, y) {
    // 指向同一内存时
    if (x === y) {
    return true;
    }
    else if ((typeof x == "object" && x != null) && (typeof y == "object" && y != null)) {
    if (Object.keys(x).length != Object.keys(y).length)
    return false;
    for (var prop in x) {
    if (y.hasOwnProperty(prop))
    {
    if (! deepEqual(x[prop], y[prop]))
    return false;
    }
    else
    return false;
    }
    return true;
    }
    else
    return false;
    }
    

 
// 看代码说结果
setTimeout(function() {
console.log('setTimeout1');
new Promise(function(resolve) {
console.log('promise0');
resolve()
}).then(function() {
console.log('settimeout promise resolveed');
})
});
setTimeout(function() {
console.log('setTimeout2');
});
const P = new Promise(function(resolve) {
console.log('promise');
for (var i = 0; i < 10000; i++) {
if(i === 10) {
console.log('for');
}
if (i === 9999) {
resolve('resolve');
}
}
}).then(function(val) {
console.log('resolve1');
}).then(function(val) {
console.log('resolve2');
});
new Promise(function(resolve) {
console.log('promise2');
resolve('resolve');
}).then(function(val) {
console.log('resolve3');
})
console.log('console');
  • React 异步组件
  • react 生命周期 源码相关
  • 实现react render函数
    function render( vnode, container ) {
    // 当vnode为字符串时,渲染结果是一段文本
    if ( typeof vnode === 'string' ) {
    const textNode = document.createTextNode( vnode );
    return container.appendChild( textNode );
    }
    const dom = document.createElement( vnode.tag );
    if ( vnode.attrs ) {
    Object.keys( vnode.attrs ).forEach( key => {
    if ( key === 'className' ) key = 'class';            // 当属性名为className时,改回class
    dom.setAttribute( key, vnode.attrs[ key ] )
    } );
    }
    vnode.children.forEach( child => render( child, dom ) );    // 递归渲染子节点
    return container.appendChild( dom );    // 将渲染结果挂载到真正的DOM上
    } 
	
  • AST了解吗?
  • webpack
  • Style-loader 实现
  • loader plugin 区别、实现原理
  • webpack常见配置
  • 平常看哪些书

#2022校招##面经##字节跳动##前端工程师#
全部评论
我靠,题目这么令人窒息,楼主太强了
1 回复
分享
发布于 2021-10-11 11:47
你是研究生的秋招面试吗?
1 回复
分享
发布于 2021-10-20 21:33
博乐游戏
校招火热招聘中
官网直投
lz接触前端多久了?
1 回复
分享
发布于 2021-11-08 14:39
楼主看过哪些书?
点赞 回复
分享
发布于 2021-10-11 14:22
楼主hr面后几天意向的啊
点赞 回复
分享
发布于 2021-10-11 21:28
看到实现usememo,usescroll人都不好了
点赞 回复
分享
发布于 2021-10-28 11:25
想问楼主,有笔试吗,是笔试过了再面试的,还是直接面试的吖?
点赞 回复
分享
发布于 2021-10-29 19:00
三面后多久hr面?
点赞 回复
分享
发布于 2021-11-12 19:58
base哪呀?我也是商业化哎
点赞 回复
分享
发布于 2021-11-17 14:03
大佬,reac项目做的是什么啊
点赞 回复
分享
发布于 2021-11-26 11:15
lz面完是当天给结果吗
点赞 回复
分享
发布于 2022-03-02 09:34

相关推荐

头像
03-02 17:23
已编辑
字节跳动_后端
点赞 评论 收藏
转发
字节跳动-2024校招火热进行中!字节跳动-国际电商-后端-校招同学速速看来!优秀同学不可错过国际电商商业平台研发团队主要面向平台商家、运营、达人等电商生态合作伙伴,主营ToB业务,帮助商家、达人等挖掘商业机会、帮助运营提升运营效率、帮助电商生态各类其他商业伙伴能够在电商生态中经营和发展。目前国际电商全球开国,业务增量大,需求持续推进中~与国际接轨,发展空间、前景大,还有出差外派机会,HC多多,欢迎投递。期待2023.9-2024.7期间毕业的优秀计科等相关专业的本/硕/博同学联系投递!帖子下面直接回复沟通即可进入快速通道,加快投递进程,关注投递阶段!【校招内推码:MQN4RBS】base:珠海、北京、深圳、上海、杭州职位描述团队介绍:国际电商是以国际化短视频产品为载体的内容电商业务,致力于成为用户发现并获取优价好物的首选平台,在直播电商、视频内容电商等多场景下,国际电商业务希望能为用户提供更个性化、更主动、更高效的消费体验,为商家提供稳定可靠的平台服务,在更多的地区实现没有难卖的优价好物,让美好生活触手可及的使命。我们邀请你来此成长、钻研,发掘无限的潜力,一起应对技术和业务上的挑战。目前团队拥有丰富的国际化产品研发经验,包容多元的文化,且在全球设立研发团队,邀请你来一起接受跨国合作的挑战,还有出差外派机会在等你!1、负责字节跳动国际电商业务的后端开发工作;2、负责架构设计和开发,为亿级用户提供优质顺畅的信息服务和极致体验; 3、负责在线大流量高并发系统设计和性能调优;4、参与各专项技术调研,新技术引入等前瞻项目。职位要求1、2024届获得本科及以上学历,计算机相关专业优先; 2、热爱计算机科学和互联网技术,精通至少一门编程语言,包括但不仅限于:Java、C、C++、PHP、&nbsp;Python、Go;&nbsp;3、掌握扎实的计算机基础知识,深入理解数据结构、算法和操作系统知识;4、有优秀的逻辑分析能力,能够对业务逻辑进行合理的抽象和拆分;#春招##字节##字节跳动##字节跳动内推##求职#
点赞 评论 收藏
转发
5 56 评论
分享
牛客网
牛客企业服务