字节跳动data aml 前端实习一面60min

字节跳动Data AML部门前端实习一面面经

本次面试时长1小时,主要涵盖项目经历、技术原理、基础知识和算法编程等方面,具体内容如下:

一、项目经历

面试官首先询问了实习项目相关内容,围绕项目背景、技术实现、遇到的问题及解决方案展开交流,考察对实际项目的参与度与理解深度。

二、Suspense原理及实现

1. 原理:Suspense 是 React 用于处理异步渲染的组件,可在数据加载或组件渲染完成前展示加载指示器,提升用户体验。

2. 实现方式:被问到在 useEffect 中存在 fetch 请求时,如何让顶层组件感知组件存在异步请求。回答可通过 React Context 实现信息透传,但存在更优方案,可从 React 的新特性或状态管理库角度进一步优化 。

三、JS基础

1. var、let和const的区别:var 存在变量提升,会导致变量在声明前可被访问;let 和 const 具有块级作用域,更加安全。

2. var逐渐被弃用原因:var 没有块级作用域,在复杂代码中容易引发变量覆盖等意外问题,使用 let 和 const 可避免此类风险,提高代码的可读性和稳定性。

四、CSS基础

1. 三列瀑布布局(两边固定,中间自适应):纯CSS可通过浮动或绝对定位实现;使用flex布局更优雅,flex: 1 表示该元素会自动分配剩余空间。

2. flex常用属性:主要涉及主轴和横轴方向设置,如 flex-direction 定义主轴方向;常用的居中属性包括 justify-content: center(主轴居中)和 align-items: center(交叉轴居中) 。

3. CSS动画:通过 animation 属性实现,配合关键帧 @keyframes 定义动画的起始和结束状态、变化函数(如线性变化)以及时间等参数。animation 在渲染进程的合成线程执行,不会阻塞JS执行,效率较高。

五、算法编程题

1. 合并有序链表
// 定义链表节点结构
function ListNode(val, next) {
    this.val = (val === undefined? 0 : val);
    this.next = (next === undefined? null : next);
}

var mergeTwoLists = function(l1, l2) {
    const dummy = new ListNode(0);
    let current = dummy;
    while (l1 && l2) {
        if (l1.val < l2.val) {
            current.next = l1;
            l1 = l1.next;
        } else {
            current.next = l2;
            l2 = l2.next;
        }
        current = current.next;
    }
    current.next = l1 || l2;
    return dummy.next;
};
2. 二叉树寻找公共父节点(节点有parent指针)
function lowestCommonAncestor(p, q) {
    const set = new Set();
    while (p) {
        set.add(p);
        p = p.parent;
    }
    while (q) {
        if (set.has(q)) {
            return q;
        }
        q = q.parent;
    }
}
3. 实现sum函数curry化

   
全部评论
友友,这个后续有反馈吗
点赞 回复 分享
发布于 2025-08-08 19:31 北京
佬怎么美团OC了还一直在面
点赞 回复 分享
发布于 2025-08-02 20:18 上海

相关推荐

两点面完京东火速三点面字节,哎感觉有点神志不清了同时面试官这里我的简历还是前年的,一直没更新过,感觉完全发散想到什么问什么,给我绕晕了移动os部门1 自我介绍2 介绍一段实习经历2.1用的都是Java开发,字节内部大部分是go,转语言学习大概需要多久(回复几周时间,可以看情况调整进度)2.2实习时间安排2.3拷打实习项目3 MySQL聚簇索引跟非聚簇索引区别是什么4 MySQL事务隔离级别5 可重复读解决了什么问题6 间隙锁是什么,发挥什么作用7 MySQL的int占几个字节,bigint占几个字节(4,8 当时这里有点忘了不太确定,面试官一点反馈没有我还以为自己说错了)8 utf8下,varchar(20)最多放几个字符9 int11是什么意思?(宽度的意思?这个当时是真想不起来了,后边一查这玩意MySQL8.0都废弃了)10 如何解决大数据量下的深分页问题11 Redis在项目中主要起什么作用12 Redis热key可能会出现什么问题,如何解决13 Redis常见数据结构,分别有什么作用13.1 zset为什么可以做排行榜13.2 zset底层跳表是个什么结构,是如何根据score排序的(这里一点没答上)14项目中都是单体部署的吗?(回答有用到集群,但也不接着问,有点莫名其妙)15 小程序端发送请求到服务端的过程(只答上了dns解析与tcp连接,没准备过)16 tcp三次握手的过程,为什么需要三次17 有用过消息队列吗?(实习中用过,但也不继续问)手撕sql,有员工表e,部门字段d,查询部门人数多于50的部门,select d from e group by d having count(*)>50,当时没怎么想就写上了,然后马上就给我出下一题手撕 分割回文串 回溯那道先说了下思路,回溯枚举,同时判断是否为回文串,结果面试官一直揪着判断回文串问,因为我说的是双指针头尾遍历,先问我时间复杂度是多少,又让我优化,但是题解上灵神也是这么写的,我看了十分钟也没想到怎么优化,于是先让我写,结果又写了十分钟边界没处理好,面试官说就这样吧进入反问面试表现,有什么建议吗?答: 可以多去大厂实习(...是我不想吗,那你给我过了不就好了)这回答的我有点蒙,也没问业务就结束了暂时想起这么多,面完京东有点晕,都忘了开录音了,不过现在面完三个多小时还没发感谢信,已经知足了,上次面懂车帝半个小时就发感谢信了
查看24道真题和解析
点赞 评论 收藏
分享
评论
6
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务