字节跳动客户端开发实习生面经(已offer)

时间线

2月25日一面,约45min
3月2日二面,约60min
3月8日三面,约60min
3月12日 Hr面

一面

0.自我介绍
【Java】
1.Integer和int类型的区别
2.讲一下重写、重载和多态
3.(接第2题)在什么场景下用,为什么要用,有什么作用
4.泛型有了解吗
5.设计模式有了解吗
答MVC、MVP和MVVM。说了MVC两两之间可以交互,M是模型核心(数据库),C是业务逻辑,V是视图(html)。面试官问没有数据库怎么办,我???
6.Java的工厂模式
https://www.runoob.com/design-pattern/factory-pattern.html
【数据库】
1.一张学生表,一张成绩表,让查所有挂科学生
SELECT Student.Sno, Sname
FROM Student, SC
WHERE Student.Sno = SC.Sno AND Grade<60
面试官问怎么不用JOIN,后来改成了LEFT OUTER JOIN并且解释了一下,面试官说不对啊,学生表里没记录的学生是不要的,最后直接用JOIN
【计算机网络】
1.TCP和UDP的区别
答案如下:
①TCP面向连接,UDP无连接
②TCP要求资源较多,UDP较少
③UDP程序结构更简单
④TCP面向字节流,UDP面向数据报
⑤TCP保证数据可靠性,UDP可能丢包
⑥TCP保证数据顺序,UDP不保证
2.TCP三次握手
3.HTTP协议用的哪个
答是TCP,我说了一下二者适用情况
4.如果让你设计一个协议怎么设计(应用层协议)
我说报文首部要有一些必要字段,版本,URL,数据长度啥的
面试官又问怎么实现这些???
其实应该是想问HTTP请求、应答报文的格式,以及如何分隔字段
后来面试官给我讲了分隔符
HTTP请求、响应报文格式:https://blog.csdn.net/a19881029/article/details/14002273
【算法】
1.一个数的二进制表示有多少个1
位运算优化:
x /= 2改为x >>= 1
x % 2改为x & 1
【反问环节】

当天晚上9点收到hr小姐姐消息,约二面。

二面

0.自我介绍
【Java】
1.Java中的集合
2.ArrayList的数据结构
3.ArrayList超出内存范围了怎么办
4.向ArrayList中添加100个,过程是怎样的
接下来问了好久HashMap
5.HashMap实现原理
6.HashMap的put操作是怎么实现的
7.HashMap负载因子
8.HashMap扩容机制,扩容因为链表太长还是数组太长
9.==和equals
10.hashCode
11.Java内存模型
5部分:
方法区、堆、Java虚拟机栈、本地方法栈、程序计数器
12.堆的划分
我答了四种引用:强引用、软引用、弱引用、虚引用
13.Java是怎么判断是否回收对象的
先答了引用计数器,面试官问Java中是用的这种吗?我说应该是可达性分析,判断从GC根到变量是否有引用链
14.为什么不用引用计数器?用可达性分析?
15.内存泄露
16.进程和线程
17.线程池有了解吗?(这个没复习到,太可惜了)
18.线程同步的方式
我说了互斥锁,信号量,信号
Java中的实现方式我说synchronized,还有wait和notify。
面试官问wait和notify是线程同步吗?
19.synchronized和volatile(Java并发编程的原子性、可见性、有序性)
【算法和数据结构】
1.用数组实现栈,要求O(1)时间复杂度获取栈的最小值
先说思路:创建一个类,里面有两个栈,一个栈是正常的,另一个栈在每次push时如果当前值比栈顶小,就入栈当前值,否则入栈栈顶值,这样可以保证栈顶永远是最小值
然后写代码
2.给一个数组,要求调整顺序,使得奇数都在前面,偶数都在后面
算法:双指针
【反问环节】
问了下面试官对我的评价,说基础还可以,写代码时有些corner case要注意。

第二天上午hr小姐姐说通过了,约三面。

三面

【Java】
1.Java如何创建一个线程
2.面试官写了一段代码,用匿名内部类的方式启动线程(实现Runnable接口),在匿名内部类里修改了外部类的变量,问这样写能否通过编译
答案是可以,但当时回答说记不清了,只记得非匿名内部类是可以的,面试官就让写一下什么叫非匿名内部类,写了一个成员内部类
3.上述代码里,在新的线程修改了变量之后加一行System.out.println(i),问打印的是几(外部类赋值i=0,匿名内部类里改成i=1)
回答打印1
4.如果在System.out.println(i)前加一句Thread.sleep(1000),打印几,为什么
【算法和数据结构】
5.是否了解位运算 >>,<<,&
6.手撕:判断一个byte里有几个1
7.手撕:把一个byte倒过来
8.手撕:算法题,大数相加,给出String a和String b,结果范围可能超出int,要求返回String
【反问环节】
请面试官介绍了一下所在部门和业务。

还有一些关于Java的问题,记不清了。
问完技术之后闲聊了一些,大概多久来实习,可以实习多久等等。

HR面

问了项目经历、个人在项目中的角色、压力最大的是什么时候、上学期间的每天安排、个人规划等等。很全方位地考察了软性素质。

Offer

3月15日收到实习Offer啦

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
虽然我无法提供实际的面试经验,但我可以给您一些关于字节跳动客户端实习面试的一般建议。在字节跳动客户端实习面试中,通常会涉及以下方面: 1. 基础知识和技术能力:准备好掌握Android或iOS开发的基础知识,并熟悉相关开发环境和工具。了解常用的框架和技术,如Android SDK、Java/Kotlin、iOS SDK、Objective-C/Swift等。 2. 项目经验和作品展示:准备好详细描述您在过去的项目中的角色和贡献。如果可能的话,展示您在开发过程中所完成的实际作品,例如开源项目、个人项目或参与的团队项目。 3. 编程能力和算法题:在面试中,您可能会遇到一些编程问题或算法题。这些问题旨在考察您的编程能力和解决问题的能力。熟悉常见的数据结构和算法,并练习解决一些常见的算法问题。 4. 代码审查和优化:面试官可能会要求您阅读和理解一段代码,然后提供优化建议或发现潜在问题。准备好在有限的时间内仔细阅读和析代码,并提供您的思考过程和改进建议。 5. 文化匹配和团队合作:字节跳动注重团队协作和文化匹配。在面试中,他们可能会问您有关团队合作、解决问题和适应变化的情况。准备好享您在这些方面的经历和故事。 请注意,具体的面试流程和问题可能因职位和面试官而异。因此,除了以上建议外,还要根据您所申请的具体职位进行更详细的准备。祝您在字节跳动客户端实习面试中取得好成绩!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值