• 2022年字节跳动抖音日常实习面经


    6月份太忙了,这个月就不更新技术文了,给大家分享一篇字节跳动客户端面经,希望对大家有所帮助~

    整体时间线

    1. 6月6号,字节官网内推投简历。6号晚上21点02分,HR电话约一面,约的15号晚上17:00面试。
    2. 6月15号晚上17:00一面,时长一小时。
    3. 6月16号中午11:08分,HR电话通知一面过,约了6月20号晚上19点二面。
    4. 6月20号当晚,18:48分 HR 小姐姐打电话通知,面试官在开会,需推迟15分钟,改为18:15分二面,面试时长75分钟。
    5. 6月21号中午11:20左右,HR小姐姐加我微信,我以为幸福来了,结果是来约我明天三面的-_-!。约的22号下午18:00点面试。
    6. 6月22号晚上18:00三面,时长一小时。
    7. 当晚,22号晚上8:20,HR来电话,流程走完了,约了明天下午16:00HR面。
    8. 23号下午16:00HR面,时长45分钟。
    9. 24号中午13:00得知面试已通过,offer审批中。

    一面:飞书视频面,一小时

    1_一面邀约.png

    简单介绍一下自己

    做项目过程中遇到的有挑战性的事情

    挖简历上的两个项目

    • 第一个项目

    ​ 光效页下载20多组帧图优化场景:考虑用一个队列,每次同时下几张,代替for循环。

    ​ 广告页需求:闪屏文件下载时机?

    • 另一个项目,简单问了下聊天数据存在哪里?

    SharedPreference 内部原理,为什么性能不好?

    Activity的生命周期,一个Activity打开另一个Activity经历的生命周期,启动一个透明Activity会经历的生命周期。

    Activity启动过程。

    用过内存泄漏的检测工具吗?LeakCanary原理介绍一下?为什么LeakCanary要手动调用一次gc()?

    GC回收机制?

    View事件分发机制?父类拦截了down事件后,子类还可以接收到事件吗?

    写一个线程安全的静态内部类单例。

    为什么不加volatile关键字会有线程安全问题?

    volatile关键字如何保证可见性和原子,其原理是什么?

    算法:接雨水

    提问环节:

    我今天面试表现如何?

    • 还不错,基础挺好的。

    对我有什么建议或哪里有需要改进的地方?

    • 整体还不错。

    部门base在哪里?

    什么时候能出面试结果?

    • 等HR通知

    二面,飞书视频面,75分钟

    2_二面邀约.png

    简单介绍下自己

    聊项目,在DNF助手项目中做了哪些业务?业务的具体场景?

    项目中是用什么图片加载库进行加载的?如果让你实现一个图片加载库,你要怎么考虑?

    • 缓存策略:内存+本地存储。
      • 如何清除本地中过期的图片?缓存图片时,给缓存路径添加上图片的有效时间,当下次用户使用图片加载库的时候,对过期的图片进行清理。
    • 线程池

    项目有使用列表的场景吗(RecyclerView),RecyclerView的内部原理说一下(缓存策略)?

    对于不同类型的子View,RecyclerPool缓存池可以复用吗?

    • 在 RecyclerPool 中,用两层列表来存放可以复用的HolderView。第一层通过viewType获取到指定类型的复用列表。第二层就是对应类型的可以复用的holderView。第二层列表的大小默认是5。
    • 所以答案是,不同类型的holderView,存放的是不同的缓存池,所以不可以相互复用。

    你在使用RecyclerView时,具体从哪几个方面优化RecyclerView页面的性能的?

    • 从子View的Xml结构入手,考虑怎么优化View的层级,减少View的测量消耗。对于能够缓存的数据尽量进行缓存。
    • 如果页面用户滑动的非常频繁,可能需要定制RecyclerView的缓存池大小。

    你刚提到View的测量消耗,能具体说说怎么优化吗?

    ​ - 尽量减小子View的层级,不同的ViewGroup它的测量过程也是不一样的,比如,简单布局下LinearLayout的性能比RelativeLayout更高。

    接着问到View的测量过程,顶级View的MeasureSpec对象和子View的MeasureSpec对象如何创建?View测量完之后的测量过程是什么?

    接着两道程序题:

    1. 第一道与任务栈相关,考察Activity的启动模式:栈内复用模式,taskAffinity属性。
    2. 第二道多线程,问你如何让多线程顺序执行。

    从第二道程序题聊到Handler机制,聊聊Handler机制的原理?Handler与Looper的对应关系?

    最后,一道算法题:

    给定一个无序的数组,值只会有1,2,3。要求在O(n)时间内将数组按升序排序,不可新增数据结构(数组,链表,map),允许新增变量。

    即:[1, 2, 3, 3, 2, 1, 3, 2, 1] -> [1, 1, 1, 2, 2, 2, 3, 3, 3]。

    思路是:只需将所有最小的1移到数组最左边,将所有最大的3移到数组的最右边,即可满足一次遍历完成排序。维护两个索引,第一个索引维护数组左边最后一个1的下一个位置,第二个索引维护数组右边第一个3的前一个位置。然后顺序遍历,对元素进行值的比较,然后交换即可。

    提问环节:

    我们部门具体负责的业务有哪些?base具体在深圳哪里?

    我的面试表现?

    后面几分钟,闲聊,面试官问到,目前有面其他公司吗,手里有几个offer?

    目前我在研一,我的实习时间怎么安排?

    三面,飞书视频面,一小时

    3_三面邀约.png

    第三面,我只能说,面的稀烂。

    只面了2道算法题,没一道做出来的。不是题目难,是思维一下卡住了,想不到了,我崩溃了。

    第一道,抽扑克,每次抽一张,然后下一张放到最后面,接着顺序抽下一张,重复以上操作。直到手中的扑克牌抽完为止

    中间还有一道:每隔k个元素,旋转一次链表。这题我会,但面试官说java没有链表,得自己实现,怪麻烦的,所以换了一道。

    第二道,实现开根号。简单吧!,我没写出来,我笨啊!我是真的笨啊!

    三面一小时面下来,心里只剩三个疑问:我是谁?我在哪?我要去哪里??

    苦笑哇哈哈哈哈。。。

    提问环节:

    (面完我人都傻了,都不知道要问什么,随便问了两个问题,面试官看我情绪低落,还安慰了我一下,说还会根据其他两面的结果来看的,不一定会挂。)

    我的面试表现?

    有啥建议吗?

    第三面后,至此就结束了吗?并没有!!

    在我还在为面试表现不佳,低落情绪,准备走出宿舍找点事干分分心的时候,有个四川的电话打了过来。

    四川的电话?谁啊?莫非是前几天618买的快递到了还没取,小哥给我打电话让我取一下?

    随便啦,接听

    “喂,你好?”

    “诶,你好,请问是古嘉明同学吗?我是抖音的HR”

    我的内心,嗯?!莫非?还是说这么快送感谢信来了?

    “嗯,是的”

    “嗯,你这边的面试流程已经走完了,接下来跟你约一下HR面噢,明天下午有空吗?”

    我的内心,!!!!!!!!!!!!!!!!!!!!

    “有哇有哇,明天下午我都有空!”

    我的天呐!没想到居然还有下文!一定是我前两面表现的还不错,我的天呐!!!!

    4_三面后的心情.png

    看上图知我心情~哈哈哈

    HR面,飞书视频面,45分钟

    主要是聊天。问了很多关于实习时开发项目的问题,比如你在开发这个项目时遇到的困难点?你是怎么解决的?在开发中令你印象比较深刻的环节是什么?开发过程中遇到意见不和怎么办等等。

    如果时间追回到你刚开始实习那会,你会做哪些调整?

    如果有两位同事争吵了,这时候你该怎么办?

    你进入公司后的技术规划是什么?你觉得你进入字节后,上手项目需要多长时间?

    如果你进入公司后,发现身边的人比你优秀或者说你并没有你想象中的那么优秀,你会有什么反应?

    对于比你厉害的人,你是通过什么方式提升自己去追赶他的呢?学习通过什么途径?

    如果你进入字节实习,你的上一次实习经历,对你在字节实习有什么帮助?

    你是怎么安排你的课余时间的?

    什么时候能开始实习,能实习多长时间?

    目前还有在面其他公司吗?你投了哪几家?手里还有别的offer吗?

    提问环节

    公司的工作时间安排是如何的?

    24届实习到明年时,有转正机会吗?

    最后,HR面完第二天,中午得知面试已通过,查官网应聘记录流程显示,面试已完成:

    5_面试已完成.png

    兄dei,如果觉得我写的还不错,麻烦帮个忙呗 😃

    1. 给俺点个赞被,激励激励我,同时也能让这篇文章让更多人看见,(#.#)
    2. 不用点收藏,诶别点啊,你怎么点了?这多不好意思!
    3. 噢!还有,我维护了一个路由库。。没别的意思,就是提一下,我维护了一个路由库 =.= !!

    拜托拜托,谢谢各位同学!

  • 相关阅读:
    vue3根据数据取消el-table选中状态获取到最新数据
    浅谈根号分治
    DDL相关操作
    《Orange‘s 一个操作系统的实现》第五章
    自己理解的TCP三次握手
    统计数(C++)
    Vscode远程调试及gdbserver配置
    go语言基础之基本数据类型
    你是否想知道如何应对高并发?Go语言为你提供了答案!
    Debian12通过Docker安装mariadb数据库(mysql可参考)
  • 原文地址:https://blog.csdn.net/qq_40987010/article/details/125484169