字节跳动客户端日常实习一面、二面、三面、hr面面经
字节客户端日常实习面经分享
简介
因为超级喜欢字节跳动并且有种莫名的向往,博主通过学长内推投了字节跳动客户端的日常实习生,面试总历时五天,总共四轮,三轮技术面(周一 一面,周三 二、三面,周五 hr面,因为博主有些急事儿,所以二、三面是连续的),一轮hr面,技术面每轮1小时到1小时四十分钟左右,hr面十几分钟就结束了,每轮面试结束等待通知在半天到一天。hr面结束后加上周六周日等待了五天,于次周周三,本人收到hr电话拿到入职offer。
大家应该都不喜欢太多的废话,那么我就直接上面试的问题吧,答案网上都比较好找。
一面
- 自我介绍
- Activity的生命周期
- Activity A点击跳转到Activity B后经历的生命周期是如何的?(主要就是A的onStop在哪儿运行)
- BroadcastReceiver的注册方式
- Handler工作原理(包括子线程Looper、主线程Looper不需要声明),最好看看源码
- 耗时操作为啥不能放在主线程?
- UI操作在什么线程?为什么?
- 自定义VIew的属性获取问题(TypeArray)
- 自定义View的过程
- Java多线程多进程方面的知识,sychronize静态方法和类方法的区别(多线程这一块我就直接过了,直接说不太会所以没有细问)
- 集合用过哪些?线程安全的有哪几个
- 两个业务场景考察,都是即时聊天有关的场景,第一个是聊天框中当前发送消息与向服务器请求获取的历史消息列的冲突问题,你发送消息的时候你的消息还没有到服务器而此时你向服务器请求获取历史消息,你的历史消息显示问题(面试官提示我说消息都有自己的id)。第二个是从服务器传来成千上万组数据,怎么接收?(分批次,如何分批次?我是说通过广播机制,有序传播,低于一定容量就截断广播,超出则继续广播。)
- 算法题比较简单,就是一串字母判断是否为合法字符串,规则有三:
(1). 字母可以全部是大写
(2). 字母可以全部是小写
(3). 可以首字母是大写,其余字母全小写
除此之外全不合法,返回值为布尔型,合法返回True,不合法返回False,要求常数级别空间复杂度
二面
- 自我介绍
- TCP/UDP的区别以及各自应用场景
- TCP建立连接三次握手,断开连接四次挥手的详尽过程
- Java基础知识,接口与抽象类区别,其内部方法和变量是有什么限制?
- == 、hashcode、equals的区别,Integer(Object)的比较和int的比较区别
- Java多线程方式
- 多线程的几种状态
- Thread.start()以后线程处于什么状态
- 集合用过哪些?
- LinkedList和ArrayList有了解过么?
- HashMap的容量是固定值么?达到什么样程度后进行扩容?
- HashMap的put和get是如何实现的?
- 算法题是给定一个数组,数组内每三数之和唯一,求三数之和最接近target的三个数。
三面
- 自我介绍
- 然后根据自我介绍的项目进行少许提问,根据项目中知识会问一些问题
- TCP、UDP区别和应用场景
- 四大组件说一下你的认知,会根据你的一些认知与使用情况进行提问
- Activity的四种启动方式
- AIDL 你说一说你的使用和了解程度
- 你说到其中的单例模式,写一下看看
- fragment用过吗,他和Activity什么时候使用哪个?Fragment生命周期
- 计算机原理内容,进程与线程的区别
- 进程间的通信方式
- JVM知识,GC(这一块基本没看过,所以他就没问了)
- 算法题是给出两个字符串,找出两字符串的最长公共子字符串,不要长度,要给出字符串。
hr面
- 自我介绍
- 纯聊天,介绍下自己原来实习做了啥,看你原来几个的实习都挺短,为啥不继续实习了?(一个两个月的,一个三个月的)
- 有对即将要做的东西有了解么?
- 你对字节比较向往,那你可以说说你对字节的了解以及为什么向往么?
- 其他一些问题你都向XX了解过了吧,看你有什么其他想了解的么?
- 有想过明年校招去字节的哪个产品部门了么?比如头条,抖音之类的
总结
以上大概就是我面试的一些问题,大差不差吧,然后想说一说体验吧:
- 第一,就是知识问的很全面,很全面,很全面。
基本就是android基础,java基础,Java多线程,计算机组织原理,JVM方面的知识。 - 第二,每一面面试官超级nice
面试过程中面试官会给你提示,不会催促,你可以向他们求助询问是否可以给些提示。二面中间断了一两次网,内心慌得一批,但是面试官超级超级nice,安慰到位,点赞。 - 第三,算法题很重要
每一轮技术面都会有算法题,基本我都是用暴力+优化后的算法的解决。