6月份太忙了,这个月就不更新技术文了,给大家分享一篇字节跳动客户端面经,希望对大家有所帮助~
简单介绍一下自己
做项目过程中遇到的有挑战性的事情
挖简历上的两个项目
光效页下载20多组帧图优化场景:考虑用一个队列,每次同时下几张,代替for循环。
广告页需求:闪屏文件下载时机?
SharedPreference 内部原理,为什么性能不好?
Activity的生命周期,一个Activity打开另一个Activity经历的生命周期,启动一个透明Activity会经历的生命周期。
Activity启动过程。
用过内存泄漏的检测工具吗?LeakCanary原理介绍一下?为什么LeakCanary要手动调用一次gc()?
GC回收机制?
View事件分发机制?父类拦截了down事件后,子类还可以接收到事件吗?
写一个线程安全的静态内部类单例。
为什么不加volatile关键字会有线程安全问题?
volatile关键字如何保证可见性和原子,其原理是什么?
算法:接雨水
我今天面试表现如何?
对我有什么建议或哪里有需要改进的地方?
部门base在哪里?
什么时候能出面试结果?
简单介绍下自己
聊项目,在DNF助手项目中做了哪些业务?业务的具体场景?
项目中是用什么图片加载库进行加载的?如果让你实现一个图片加载库,你要怎么考虑?
项目有使用列表的场景吗(RecyclerView),RecyclerView的内部原理说一下(缓存策略)?
对于不同类型的子View,RecyclerPool缓存池可以复用吗?
你在使用RecyclerView时,具体从哪几个方面优化RecyclerView页面的性能的?
你刚提到View的测量消耗,能具体说说怎么优化吗?
- 尽量减小子View的层级,不同的ViewGroup它的测量过程也是不一样的,比如,简单布局下LinearLayout的性能比RelativeLayout更高。
接着问到View的测量过程,顶级View的MeasureSpec对象和子View的MeasureSpec对象如何创建?View测量完之后的测量过程是什么?
接着两道程序题:
从第二道程序题聊到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?
目前我在研一,我的实习时间怎么安排?
第三面,我只能说,面的稀烂。
只面了2道算法题,没一道做出来的。不是题目难,是思维一下卡住了,想不到了,我崩溃了。
第一道,抽扑克,每次抽一张,然后下一张放到最后面,接着顺序抽下一张,重复以上操作。直到手中的扑克牌抽完为止。
中间还有一道:每隔k个元素,旋转一次链表。这题我会,但面试官说java没有链表,得自己实现,怪麻烦的,所以换了一道。
第二道,实现开根号。简单吧!,我没写出来,我笨啊!我是真的笨啊!
三面一小时面下来,心里只剩三个疑问:我是谁?我在哪?我要去哪里??
苦笑哇哈哈哈哈。。。
提问环节:
(面完我人都傻了,都不知道要问什么,随便问了两个问题,面试官看我情绪低落,还安慰了我一下,说还会根据其他两面的结果来看的,不一定会挂。)
我的面试表现?
有啥建议吗?
第三面后,至此就结束了吗?并没有!!
在我还在为面试表现不佳,低落情绪,准备走出宿舍找点事干分分心的时候,有个四川的电话打了过来。
四川的电话?谁啊?莫非是前几天618买的快递到了还没取,小哥给我打电话让我取一下?
随便啦,接听
“喂,你好?”
“诶,你好,请问是古嘉明同学吗?我是抖音的HR”
我的内心,嗯?!莫非?还是说这么快送感谢信来了?
“嗯,是的”
“嗯,你这边的面试流程已经走完了,接下来跟你约一下HR面噢,明天下午有空吗?”
我的内心,!!!!!!!!!!!!!!!!!!!!
“有哇有哇,明天下午我都有空!”
我的天呐!没想到居然还有下文!一定是我前两面表现的还不错,我的天呐!!!!
看上图知我心情~哈哈哈
主要是聊天。问了很多关于实习时开发项目的问题,比如你在开发这个项目时遇到的困难点?你是怎么解决的?在开发中令你印象比较深刻的环节是什么?开发过程中遇到意见不和怎么办等等。
如果时间追回到你刚开始实习那会,你会做哪些调整?
如果有两位同事争吵了,这时候你该怎么办?
你进入公司后的技术规划是什么?你觉得你进入字节后,上手项目需要多长时间?
如果你进入公司后,发现身边的人比你优秀或者说你并没有你想象中的那么优秀,你会有什么反应?
对于比你厉害的人,你是通过什么方式提升自己去追赶他的呢?学习通过什么途径?
如果你进入字节实习,你的上一次实习经历,对你在字节实习有什么帮助?
你是怎么安排你的课余时间的?
什么时候能开始实习,能实习多长时间?
目前还有在面其他公司吗?你投了哪几家?手里还有别的offer吗?
提问环节
公司的工作时间安排是如何的?
24届实习到明年时,有转正机会吗?
最后,HR面完第二天,中午得知面试已通过,查官网应聘记录流程显示,面试已完成:
拜托拜托,谢谢各位同学!