首页 简历|笔试面试

腾讯、阿里、字节等一二线互联网校招面经合集-无水印版

  • 25年9月11日 发布
  • 334.31KB 共60页
腾讯、阿里、字节等一二线互联网校招面经合集-无水印版腾讯、阿里、字节等一二线互联网校招面经合集-无水印版腾讯、阿里、字节等一二线互联网校招面经合集-无水印版腾讯、阿里、字节等一二线互联网校招面经合集-无水印版腾讯、阿里、字节等一二线互联网校招面经合集-无水印版

互联网一二线公司校招面经合集

这是一个简单的声明,该面经是由阿秀系统收集&整理,收集源主要为牛客网、知乎、力扣等网站的互联网方向应届生真

实校招面经,面试公司基本都是一二线互联网公司,如阿里、腾讯、字节、百度、快手等公司。

阿秀作为一名往届的计算机专业老学长,现在也在字节跳动这边工作,也明白校招找工作的不宜,希望我的整理能帮你在

校招路上走的更平摊一些!

需要说明的是,面试是不断更新的,推送一些互联网校招资讯、上岸经验分享、笔经面经、简历优化指导等文章,希望这

些能帮助大家顺利上岸!

比如下面这类上岸分享等文章,以后会继续分享一些上岸经验总结:

Java:大厂去不了,中小厂我也满意

Java:顺利上岸字节电商后端,但也真的很不顺利

Java:民办三本,我从3K到15K的一年

C++:上岸字节基础架构,大二转专业后我终于走到这一步

C++:抖音后端,实习offer。

C++:四非选手,上岸互联网后端/服务端开发

C++:7天五面,提前批顺利上岸飞书后端

C++:前脚结束面试,后脚意向书就发来了。。。

C++:算法转开发,拿了3个offer!

C++:不管那么多,offer先接了再说

C++:毫无保留,这是我全部的嵌入式学习&秋招经验!

C++:今年嵌入式硬件这块也挺香

Golang:上岸字节基架后端,这条赛道人少点

前端:上岸快手,我选择一条不一样的路

前端:非科班转码,上岸小公司我也很满意了

测开/测试:算法转开发&测开,拿了四个offer(上)

测开/测试:算法转开发&测开,拿了四个offer(下)

算法:头铁!我就硬钢算法岗!

offer选择:offer选择,哭了,我又被倒挂了。。。

offer选择:晚生一年就是这样的结果吗?真的很不甘心。

offer选择:小厂10K vs 大厂20K,咋选?

offer选择:双非本,拿到这些offer我真的很满足!

.....

Java 面经

字节跳动

字节一面

1. 自我介绍

2. 问项目

3. 写算法题

4. 问java :

5. Retrofit怎么使用

6. Retrofit的接口层怎么实现的

7. 如何定义一个注解

8. Java 多态

9. 运行时多态的底层原理

10. 什么是泛型

11. 什么情况下选择使用泛型什么时候使用多态

12. 看过哪些数据结构的源码

13. ArrayList扩容机制:为什么会new 一个新的数组 我说了效率高而且数组长度不可变,但是面试官不太满意(谁能

告诉我怎么回答!!

14. 哪些数据结构是线程安全的:concurrentHashmap

15. concurrentHashmap怎么实现线程安全的

16.

16. 乐观锁和悲观锁

17. 你怎么实现一个乐观锁,比如多线程下使用list (不会…..

18. hashmap原理

19. 负载因子

20. 一个进程里线程结束后,进程会不会结束

21. 线程crash进程会不会crash

问题回答的也不好,面试官说我实践太少了,知识的广度已经够了,但是因为知识大部分都是书本上和网络上的来的,实

践不太够,比如不知道乐观锁的真正用途和思想,也不知道应用场景,还说我逻辑不太好。。

有被打击到,不过面试官没说错

后来又被捞起来到了电商部门

字节二面

1. 问项目

2. 这个项目是做什么的(实验室的老项目,只能说个大概

3. Java 泛型,泛型上界下界(完全是靠面试才学会了泛型,面试官还教我怎么使用

4. Volatile 哪里使用

5. 双重校验锁里的volatile ,创建对象是这么个危险的操作吗(呜呜呜不造

6. 哪里还用到了volatile 我说了多线程停止,volatile 修饰flag

7. 说一下hashmap put方法

8. 怎么判断两个元素相同(equal

9. 阈值是桶元素个数,还是全部元素个数(全部元素个数

10. 为什么树化的阈值为8 (面试官说前后链表前后查找为n/2,和log8 差不多 我心存疑虑

11. ActivityA 启动 Activity b A B生命周期

12. onSaveInstance 调用的场景,onPause之后调用

13. requestLayout 和invalidate 的区别

14. GC新生代和年老代的回收算法有什么不同(新生代复制清除、年老代标记整理

15. 内存分配担保策略

16. 你有什么优势,有什么劣势

17. 个经历之类的

Vivo

vivo一面 45分钟

1.面向对象三大特性,多态怎么实现

2.静态方法与变量是否可以继承,原因

3.Java代理是否用过,怎么实现

4.Java异常详解

5.项目中遇到的异常

6.线程安全的队列

7.类加载的过程

8.类加载器,双亲委派模型

9.对象生命周期

10.判断对象是否可以回收的方法

11.有哪些GC roots

12.Java引用类型

13.抽象类与接口区别,各自优缺点

14.Java线程间通信, volatile详解、synchronized详解

15.线程的状态

16.进程、线程、协程

17.死锁怎么造成的

18.线程池详解

19.线程池怎么做到线程复用

20.thread local详解

21.Java泛型,泛型擦除机制

22.TCP与UDP区别,优缺点

23.TCP可靠传输机制

24.介绍http协议

25.https请求流程

26.b树、b+树、红黑树

27.红黑树怎么增加、删除节点

28.输入一个URL到网页显示的过程

29.localhost 与127.0.0.1的区别

30.MVVM、MVC、MVP的区别与联系,各自优缺点

31.activity的生命周期

32.安卓中的数据存储,sharedpreference详解

字节

字节一面 1小时

1.进程、线程、协程

2.进程间能共享内存吗

3.安卓中挂起函数怎么实现的

4.安卓中实现多线程的方法

5.线程池详解

6.线程池设计模式,怎么自己设计一个线程池

7.handler详解,是否会内存泄漏,泄露的原理

8.匿名内部类,原理是什么

9.Java GC算法

10.Java引用类型,弱引用的作用,引用队列。

11.安卓图片缓存,加载

12.安卓中的布局,布局优化方法,常用标签

13.安卓四大组件

14.activity四大启动模式

15.onnewintent方法

16.本地广播

17.jetpack组件

18.viewmodel设计模式,mvc,mvp,mvvm介绍

19.retrofit的具体实现,其中接口的作用,注解的作用

20.hashtable,hashmap与 concurrenthashmap详解

21.哈希冲突解决方法,

22.算法题:随机生成不重复的100个数0-99

字节二面,50分钟

1.https详细介绍

2.get与post区别

3.请求状态码

4.cookie与session

5.Java内部类

6.泛型擦除机制

7.Java内存回收

8.GC roots

9.Java加锁方式

10.线程安全的单例模式(双重检测),为什么要两次判断,volatile作用

11.安卓的事件分发机制

腾讯

腾讯一面

1. 项目经历

2. java 三大特性?java 可以多继承吗?如何实现多继承?多态有哪些类型?

封装,继承,多态;

不可以;

接口

静态绑定、动态绑定。

3. 青蛙跳台阶, n个台阶,每次可以跳一步或两步,共有多少种跳法?

f(n) = f(n-1) + f(n-2)

4. 如何快速找到链表的中间结点?

快慢指针

5. 数学问题:1000瓶酒,用最少的小白鼠找1瓶毒酒

腾讯二面

1. 自己讲项目。用到的技术,遇到的困难。

2. JavaC++的区别?

3. C++ 什么时候可能发生内存泄漏。

4. 开发中有没有用过多线程?

5. 多线程为什么不安全?

6. HTTP GET/POST方法。HTTP在哪一层。

腾讯三面

1. 项目

2. 处理屏幕点击事件的过程?

3. Activity的启动方式

4. 刷题:输入m, n,(m%2n == 0), 初始符号sign = -1, 1到n,每m个数进行一次符号翻转,求和。

C++面经

字节抖音

字节一面

1. 自我介绍

2. shell会吗 答不会,随便问了个 答的好像也不对。。。

3. Linux端口范围

4. 中间问了几个常规八股实在记不起来了。。。

5. 数学题:一个均质硬币,如何扔出一个2/3的概率?

6. 撕题:股票买卖无限次和一次

7. 反问

字节二面

1. 自我介绍

2. 好像问了下项目?(经典服务器)

3. 传统八股,数据库索引等

4. 智力题:1-10个机器,正常生产硬币为5g,现在有一个机器坏了 生产的是4g的,请问给一把带刻度的称 怎么一

次找出有问题的机器?

5. 用 Rand7() 实现 Rand10()

6. 下面语句查询索引的过程有什么区别?select * from table where b = xx; b is index,select id from table

where b = xx; id is primary key

7. 下降路径最小和 力扣931

字节三面

1. 自我介绍

2. 实习干的啥,(天天没人管 基本没做啥)

3. 数据库用的多不多?答:基本没怎么用。那试试吧

读者可以来看书,并给书打标签。

每个读者给每一本书可以打多个不同的标签。

同一个读者给同一本书打同一个标签只算一次。

要求设计表,并写出以下查询语句

查询一本指定的书下,被打次数最多的10个标签。

查询一个标签下,被打次数最多的10本书。

完全不会,当场自闭

4. 智力题 100狼和羊,统计战机弹孔 分析后发现机翼弹孔比较多机身弹孔比较少,如果现在要加固,那优先加固机

身还是机翼(问这种题有何意义。。。)

5. 手撕 41. 缺失的第一个正数 加了限制条件 大于k的最小正整数。这题差点栽了,一开始被k迷惑了,其实就在原题

基础上偏移k就好

字节教育

字节一面

1.你的项目说用到了reactor,说一下reactor是什么?跟proactor的区别?

2.所以说你的主线程只负责监听客户端连接啰?后面处里数据都是子线程处里?

3.你用到epoll,说一下IO多路复用解决了什么问题?

4.说一下除了epoll还有什么其他的多路复用嘛?(把select,poll,epoll仔细介绍了一遍)

5.你的有限状态机是怎么实现的说一下

6.你的线程池线程调度的算法是什么(尴尬用的最阳春的就是个队列判断。。。)

基础:

1.UDP,TCP的区别说一下

2.https 跟http的区别在哪里

3.https的SSL建连过程会导致效率下降要怎么优化

4.https整个握手交互的过程总共花了多少rtt(可能是我面经看太少第一次看到求RTT的,还愣了一下RTT是什么)

算法:

股票买卖I和II (秒A了面试官问我是不是写过我很诚实的说对 )

反问:

国际化电商是做什么的? 就想成写tiktok,不知道tiktok的话就想成海外版抖音

字节二面

自我介绍:

1.指针和引用的区别?

2.为什么要有指针和引用?C++推荐指针还是引用?

3.智能指针说一下?

4.你说到unique_ptr有移动语义,那你说一下move是干吗的?

5.你说move是将左值转换成右值为什么要有move?move最根本解决什么问题

6.你说到右值引用,那你说一下左值右值的区别

7.好那为什么C要有左值右值?C的开发者为什么当初要设定左值右值目的是什么要解决什么问题(我真的不知道这时候已

经被问蒙了)

8.你设计一下shared_ptr(支支呜呜讲了半天看来面试官不满意)

9.虚函数、纯虚函数区别?

10多态说一下?虚表?

class A{

int test(int);

};

class B : public A{

int test(int);

};

int main() {

A* p = new B;

p->test(1);

}

会调用哪个test?(我答B的,面试官问为什么?这个不是虚函数阿应该不是多态呀为什么还是B)(此时已被问蒙了)

面试官:别紧张你就把你的想法说出来就行(心想:快点结束C++吧)

OS:

1.线程进程的区别?

2.为什么要有线程?当时设计操作系统的人设计线程的目的是什么?线程解决什么问题?

3.让你设计一个操作系统你会设计线程嘛?为什么?

4.死锁是什么?

5.解决死锁方法?(回答预分配资源,自己找死说了个线程要访问另一个共享资源时要先释放原先占有资源)

6.你说要先释放原先占有资源?那你怎么保证这个线程的业务完整性?(大型社死现场)

7.i++线程安全嘛?

算法:

lc 1143 (讲了思路面试官表示认可,但说我想太久了)

反问:

技术栈:swift

面试评价:基础知识掌握的不错,基本都答的出来,就是有点太紧张了,然后要更多的去想为什么要这么做,算法思路是对的就

是想太久

字节三面

7/26(,3:00PM, 1hr57min):面试官人挺好的,也很明显感觉出来是个技术大佬

自我介绍:

1.http和https区别?说一下TSL握手过程

2.https还有什么安全问题?

3.https怎么保证证书可靠性(答了证书怎么验证)

4.面试官不满意,说我这个是在说有没有被篡改,但我想问的是,证书是一个证书链,权威机构给予子机构权限让他给服务器发

证书,怎么保证说这个子机构是可靠的?或者换句话说怎么保证这个子机构发给服务器的时候,服务器怎么知道是权威机构授

权的(没答上来)

数据库:

5.SQL注入(数据库不会)

设计模式:

6.设计模式会吗,写一个单例模式(很偷懒的写了饿汉,面试官说要懒汉 )

7.好的那这个是DCL,为什么要有两次判断?(拆开来说没有第一个判断会怎样,没有第二个会怎样)

OS:

8.虚拟内存和物理内存的区别和关联?

9.栈和堆的区别?生长方向?

10.堆可以申请多大?栈一般多大?(答:栈默认是4M的样子,堆最大可以和虚拟内存一样大32为元4G,面试官那64呢?我:.....)

C++:

11.说一下野指针,内存泄漏,栈溢出都是些什么?(面试官频频点头看来很满意)

算法题:

无序数组找出所有K, K代表比左边大比右边小的元素?规定O(n)时间复杂度 测试用例是:[2,3,1,8,9,20,12] 输出是:[8,9] (也

不知道当时是怎么想的一直书出[9,8]。。。。。。。)

反问:

字节针对客户端0基础怎么培养?

面试反馈:基础可以挺好的除了数据库不熟,但你的算法思路怼,也写出来了,搞不明白让反转个答案写这么久还没出来是为什

么?所以我感觉你可能代码调试的经验不够(面字节都知道听到这个基本就是凉了 ),但我们还是会综合考虑的

字节跳动

字节提前批

字节一面

1. 自我介绍

2. shell会吗 答不会,随便问了个 答的好像也不对。。。

3. Linux端口范围

4. 中间问了几个常规八股实在记不起来了。。。

5. 数学题:一个均质硬币,如何扔出一个2/3的概率?

6. 撕题:股票买卖无限次和一次

7. 反问

语言:

C++虚函数原理

虚函数的开销

子类对象的基类子对象内存布局在前还是后

实习过程中用过cgo吗

Golang中channel的底层实现及工作原理

channel是如何做到协程安全的

channel底层为什么采用环形队列而不采用普通队列

channel如何阻塞和唤醒Goroutine的

操作系统:

epoll水平触发和边缘触发模式区别

水平触发相较于边缘触发多了哪几个系统调用

如何实现一个系统调用

epoll底层实现

红黑树怎么使用的,为何epoll_wait复杂度为O(1)

线程安全函数、可重入函数、信号安全函数的区别

浏览器中点击+号创建新的标签页,是开启了一个新线程还是新进程,以及原因

网络:

TCP和UDP哪个协议有包长限制

IP数据分片有什么弊端

TCP连接两端一个突然断连,另一端如何感知

什么情况下会出现半开连接,如何解决

数据库:

a、b字段建立联合索引,a、b、a and b、 a or b四种情况哪种会走索引

项目:

难点在哪里,为什么CKV+性能优于redis

服务器性能有哪些优化思路

无锁编程应该怎么实现

CAS操作和内存屏障底层实现原理

设计题

如何设计一个哈希表【可从表长、哈希碰撞、扩容时机来分析】

插入、更新、删除哈希表中一个元素,底层怎么操作【相当于insert、erase、get方法的实现】

Redis是如何实现rehash的

算法

求整数的立方根,返回结果向下取整。

给定一个矩阵,和一个坐标(x,y),顺时针打印元素。【lc885,只不过面试时出界就不用再往下走了】

字节二面

语言+操作系统

C++虚函数的性能开销【两面都问了,估计是想问CPU流水线分支预测失败时的额外开销】

内存池解决了什么问题

IO多路复用原理

epoll水平触发和边缘触发模式区别

网络:

URL输入到渲染的过程

设计题【全程围绕此设计题展开,没看过STL内存分配器和malloc实现原理就难顶了】

如何实现一个内存池?

为什么空闲内存要采用不同内存块大小的链表维护?

内存块大小为什么都是2的幂次方?

动态内存分配算法

首次适应分配算法和最佳适应分配算法的实现逻辑是什么?

红黑树只能保证logn复杂度,有更低复杂度方案?

内存池在多线程情况下怎么保证线程安全性

多个线程频繁申请分配并释放4字节块时,如何避免锁开销

100M大小的数组,顺序下标访问和随机下标访问的性能区别

算法:

实现memcpy函数【写了快半个小时,面试官指引下要考虑内存区间重叠情况】

字节三面

语言

C++多态

基类的析构函数为什么通常定义为虚函数

指针和引用的区别

讲讲inline函数

inline函数和宏有什么区别

C++中volatile含义

操作系统

线程安全如何保证

CAS操作是如何保证原子性的

硬件层面有哪些原子指令

C++中有哪些锁?读写锁、自旋锁什么场景使用

线程切换时的上下文切换具体指什么,包含哪些东西

线程有哪些私有数据

虚拟内存和物理内存

各个进程地址空间是如何保证独立不影响的

网络

TCP和UDP的区别

TCP流量控制

TCP拥塞控制

HTTPS握手过程

DNS采用TCP还是UDP

算法:

普通二叉树中找到第k小元素【讲思路(遍历保存节点+TopK)】

TopK【讲思路(堆或快速选择)】,快速选择找TopK的时间复杂度为什么是O(n)

二叉搜索树找第K小元素【讲思路(中序遍历到第k小元素停止)】,时间复杂度多少(O(h+k),h为树高),空间复杂

度多少(O(h))

K个一组翻转链表【手撕(ACM模式,写测试用例)】

字节实习

字节一面

自我介绍

项目:

介绍

讲讲时间轮定时器,如何执行的,一个槽精度多少?

如果处理器阻塞了5秒,会不会影响定时器的执行效果?

非磁盘IO下,多线程和单线程的QPS差这么大,原因在哪里?

讲讲项目中的线程池

线程间的同步能不能不用锁?

无锁队列怎么实现的?

C++:

C和C++在内存分配方面有何区别

讲讲C++的多态

子类对父类的非虚函数重写,通过基类指针调用的函数版本是哪版?为什么?

dynamic_cast讲一讲,如果指针类型是基类,转换为子类后,指针地址改变吗

使用dynamic_cast进行指针类型转换的类中需定义什么?

vector相较于数组的优劣有哪些?

C++类内数据成员的初始化有哪些方式

成员初始化顺序与类内声明顺序有关还是和构造函数初始化列表中的初始化顺序有关?

C的结构体和C++的类有哪些区别

网络:

URL输入后的执行过程

TCP粘包问题,原因,如何解决?

HTTP协议底层基于什么协议?能不能用其他协议?

数据库:

讲讲关系型数据库和非关系型数据库的区别

算法:

二叉树的最近公共祖先

建树、自己写下输入输出

非递归怎么做

用数组存储树节点,尝试写一下

其他:

如何降低游戏服务器的低延迟?

大概能实习多久

介绍部门业务

反问环节

字节二面

自我介绍

比赛:

介绍

服务器为何购买1.5倍?

还有哪些参数是手动设置的?

其他问题

项目:

项目来源,为什么做此项目?

定时器除了时间轮以外还有其他数据结构可以实现吗

讲讲堆的原理

线程同步除了加锁以外,能不能不用锁?

无锁队列怎么实现?

C++:

智能指针是否用过?

多线程环境下使用智能指针需要注意哪些问题?

智能指针在哪些字段需要加锁?引用计数需要加锁吗?

你觉得动态语言和静态语言间差别在哪里,动态语言的GC机制是怎么实现的?

操作系统:

malloc底层实现原理

分配内存时什么时候会调用brk?空闲链表的分配和维护是在用户态完成还是内核态完成?

讲讲程序中的bss段

讲讲程序加载运行的全过程

算法:

TopK(快排和堆两种思路,讲堆思路)

其他:

为什么选择投递字节游戏部门

最近在学习的技术

你是非科班,计算机专业知识是如何学习的?

你觉得看过的技术书籍中帮助最大的一本书是哪个?(CSAPP)

能来实习多久

反问环节

字节飞书实习

字节一面

自我介绍

项目

如果项目要实现HTTPS功能的话,有没有思路?

其他问题忘掉了。

C++:

STL中容器插入元素时push_back和emplace_back的区别

emplace_back的参数是什么(本人回答是构造函数的参数,面试官进一步追问三个点代表什么,后来才明白

问的是可变参数列表)

可变参数列表的实现原理

讲讲C++11智能指针有哪些,使用场景?

智能指针的实现原理

算法:

C++代码题,报输出结果(lambda表达式和std::function相关) 略难【问了10多分钟】

判断链表是否有环

分隔金条的最小花费(在面试官提示下做出来了,本质考数据结构—堆)【耗时10多分钟】

字节二面

自我介绍

项目(略过,问题和前几面大同小异)

C++:(C++11特性问的很广泛很深入)

类内数据成员在构造函数初始化列表中赋值和在构造函数体内赋值的区别

构造函数可以是虚函数吗,为什么

析构函数可以是虚函数吗,为什么

什么时候需要自定义拷贝构造函数

类内重载运算符怎么写,写个类重载赋值运算符(撕题第一道)

函数重载时返回值能否用于区分重载函数,为什么

讲讲虚函数运行机制

讲讲虚函数如何解析

extern “C” 的作用

讲讲C++11或14特性

左值和右值的区别

const左值引用可以绑定到字面值上吗?

引用折叠了解吗?什么情况下会推导为右值引用?

讲讲完美转发,std::forward的作用是什么?

编译器的返回值优化RVO机制了解吗?

操作系统:

线程同步方式

进程通讯方式

信号量工作原理

共享内存工作原理

管道工作原理

套接字工作原理

撕题

C++写一个类,类内有一个int成员和int*成员,让重载operator=操作符

线程安全的单例模式

最长回文子串

其他:

能实习多久

C++是自学的吗

字节电商

字节一面

面试官很nice,不了解的问题会跳过,手撕算法惨遭hard题,面试官也很耐心地给了提示。

1.linux如何杀掉一个进程,具体的系统调用是怎样的

2.32位和64位操作系统处理浮点数有什么区别

3.www.douyin.com浏览器提示找不到ip地址,分析一下可能的原因。

4.DNS解析 递归vs迭代

5.DNS主要使用的传输层协议是什么?为什么不用TCP?

6.TCP time_wait?这个状态的设计目的是什么?

7.SQL题,记不太清了。

8.手撕1.给定正整数n,找到若干个完全平方数使得他们的和等于n,求最少的个数。

9.手撕2.给定一个未排序的整数数组,找出其中没有出现的最小正整数。O(N)时间,O(1)空间。

字节二面

感觉这一面有点压力,面试官比较严肃,好像是leader 0。0

1.手撕1.判断是否是二叉搜索树

2.手撕2.带精度的开平方根

感恩的心,这次的代码题都做过而且不难,秒了,但是被吐槽写代码感觉生疏,不敢顶嘴hhh

3.C++多态,展开询问了一下多级继承和菱形继承的问题及解决方法。

4.static,编译原理

5.内存的组织结构

6.智力题.7瓶药水和3只小白鼠,找出有毒的一瓶

7.粘包,keepalive

8.之后问了一些数据库的八股,记不太清了。

这一面之后感觉凉凉,以为无了,结果过了。

字节三面

三面一波三折,从上午11点推到下午两点再推到下午5点,而且来了台风,担心面试官心情不佳把我挂了hh

1.介绍一下MYSQL常用的存储引擎

2.介绍一下它们索引的实现方法

3.隔离级别,以及其实现方式,一致性实现方式

4.B+树,红黑树

5.hash方式,冲突解决

6.map和unordered_map

7.redis数据持久化方法

8.系统调用方法

9.HTTPS,详细说两种加密方法

10.手撕:1-n的数字序列,求所有子序列。

字节头条

字节头条一面

1. 自我介绍

2. vector 尾部添加元素,需要连续的内存空间吗?

3. C++ 程序到可执行文件的过程

4. 编译原理,动态链接和静态链接有什么区别?一般什么情况用动态链接,什么情况用静态链接?

5. C++ 程序内存布局是怎么样的?堆和栈有什么区别?栈和堆各有什么优缺点?栈空间大小?

6. 2 GB 内存的操作系统中,可以分配4 GB 的数组吗?(虚拟内存)

7. 给出一个程序,看看能不能正常运行?空指针方面的

8. TCP了解吗?怎么保证可靠性的?按序到达如何做到的?

9. TCP通讯,服务端的程序挂掉了,客户端会怎么样?

10. 数据库了解吗?MySQL呢?数据库索引?关系数据库

11. 操作系统中一个进程要删除正在被写入的文件,能不能删除成功?remove

客户端面经

字节跳动

字节一面

前言

本人英国水硕。去年12月拿的毕业证。元宵过后开始备战春招,4月13结束。一半以上公司投了没反应。最终面了5

家公司(字节跳动,美团,网易有道,三七互娱,跟谁学),2个offer(三七互娱,跟谁学)。实实在在一个小菜鸡,跟

那些offer收割机大佬比不了。但也算有所收获吧。

客户端国际化业务,此次面试时间:1.16 Base 北京 (挂)

主要内容:

1. 进程和线程

2. 项目中用到过多线程嘛?

3. 线程安全

4. 死锁

5. 线程等待技术(同步机制)

6. Pv操作

7. 了解的锁的种类

8. 线程池作用

9. 进程的内存成分和作用

10. jvm

11. 网络协议栈

12. osi七层

13. 具体协议

14. HTTP怎么李彤tcp 为什么用tcp 为什么不用udp

15. TCP为什么可靠

16. 为什么三次握手而不是两次、四次或者更多

17. HTTP端口

18. 为什么要有端口

19. 数组和链表往末尾添加一个数据,谁效率高

20. HashMap读取时间复杂(对于指定下标O(1) ) 通过给定值(O(n)) 需要遍历整个数组

21. 二分查找时间复杂度O(log2n)

22. 快排时间复杂度(O(nlogn))

23. 算法: LeetCode原题 最小差

这是我准备之后的第一场面试,非常紧张。答的不算太好,但基本也都答出来了。但是算法就比较垃圾了。知道思路当时

死都写不出来,面试结束几分钟就写完了。还是自己当时太菜,对算法这些不熟练。

网易

网易一面 52min

3月10号下午2点 网易有道校招一面(52min)

1. 自我介绍

2. Android的生命周期(从创建到销毁经历的生命周期函数)

3. HashMap的原理(底层)

4. 在java中怎么解决hash冲突

5. RecyclerView

6. RecyclerView 横屏滑动和竖屏滑动怎么实现(没答出来)

7. (LinearLayout 设置为垂直,然后LinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL)

8. Handler原理

9. 要再子线程使用Handler要怎么实现(没答出来)

10. Fragment和Activity的区别

11. webview用过没(没用过)

12. Jvm的内存分布

13. Android中序列化方式(Parcelable,Serialable)

14. Android中创建线程的方式

15. 线程池

16. TCP/UDP的区别

17. TCP的三次握手、四次挥手

18. 在Android中两个Activity通过什么传递数据(传递对象先序列化)

19. GET和POST的区别

20. HTTP请求头包含哪些

网易二面 58min

3月12 下午2点 网易有道二面 (58min)

1. 自我介绍

2. TCP/UDP区别

3. 线程和进程区别

4. 写一个代码 ,有个网络请求,在Activity中new一个http请求 是进程还是线程

5.

5. 在主线程请求网络嘛?

6. 线程处理回来后,如果界面不见了怎么办(没答出来)

7. Activity启动模式

8. SingleTask和SingleInstance区别

9. 了解CPU的时间片状态嘛?

10. C动态链接库了解过(没接触过C)

11. 用过加密嘛

12. 对称加密和非对称加密的区别

13. 常用对称加密有哪些

14. 集合用过吗(List和Map的区别)

15. 什么叫线程安全的集合什么叫线程不安全的集合

16. Hash原理(冲突检测)

17. HashMap在java8版本之后有个红黑树的概念(完全?平衡?)

18. 线程池

19. 泛型

20. 泛型擦除

21. ListView优化滑动速度

22. RecyclerView 与ListView的区别

23. RecyclerView 数据更新部分(没看过)

24. 安卓的手势(Motion_Event 以及事件分发)

25. View的绘制方法

26. View的绘制流程

27. 设计模式

28. 常见架构(MVC,MVP)

29. 安卓里的动画

30. 有在canvas的绘制过吗

31. 安卓的适配单位换算

32. Bitmap

33. SurfaceView

34. SQLite 版本更新

35. 存储数据]还有其他存储方式?区别?如果应用卸载哪些会消失

36. 接口需要加abstract嘛

37. enum?(没用过)

38. MySQL 级联删除 多表查询

39. OOM遇见过嘛

40. LRU算法介绍原理

41. 矩阵Matrix 图片的颜色参数通道(没用过)

42. Picasso和Glide区别

43. 加载大图OOM怎么处理

44. 加载过程

45. 收获最大,在学校学习哪些点帮助最大,难点最大

46. 在学校或者实践当中碰到的困难的点,怎么解决的

47. 迭代器怎么完成的

48. 算法:一个有序数组找到2个值加起来为target LeetCode 第一题

网易三面 41min

网易三面 总监面 3月17日 下午15:00 41min (挂)

1. 自我介绍

2. 项目问题

3. SurfaceView的特点(因为项目用过)

4. SurfaceView的缓存机制

5. Android读过什么源码(讲了okhttp的一些缓存策略和失败重连)

6. 算法题:

7. //有char型数组words,由空格以及字母组成。 我们定义被空格隔离开的字符序列为一个单词。现需要对其处

理,把连续的空格换成一个空格,把单词的首字母大写。要求:1. 在原有数组上操作,不得开辟新的数组空间。

2. 性能也要考虑优化。//void processWords(char[] words)

有道的三次面试除了第三次的总监面,其他两次还是相当愉快的。三面的面试官,估计开的双屏跟我面试,全程几乎没有

怎么看我(可能是压力面吧),都在盯自己的屏幕,回答问题也不肯定也不否认的那种。

挂的原因觉得可能还是我的项目太简单了吧。没啥亮点。

美团

美团一面 47min

美团点评一面 3月23日15:00 (47min) Android工程师 Base北京(挂)

1. 自我介绍

2. 优化页面跳转和数据传递(简历写的)

3. 遇到什么问题

4. 看过什么源码(HashMap,线程池)

5. 讲讲线程池

6. 线程池用途

7. 创建线程的方式

8. 举一个死锁的例子,实际场景

9. Java占据一个资源的关键字是哪个

10. 写一个死锁 (两个线程两个对象)

11. SP 的存储格式

12. 当存储量很大的时候有什么问题

13. Activity和Activity之间通信方式

14. Activity A跳转到Activity B ,B再传递消息给ActivityA 用什么

15. ListView为什么要有ViewHolder(使用ViewHolder可以避免重复地调用findViewById)

16. 序列化有用过没

17. 创建对象的方式(new,clone,反射,反序列化)

18. sp和sqlite区别

19. Java中的深拷贝和浅拷贝

20. Java里创建对象 ,jvm会做什么事情

21. Java的泛型原理

22. 加密算法有了解过?

23. 用过git嘛

24. 回滚用什么命令(revert)

25. Ide用什么

26. 用过什么网络库和图片库(Picasso,Glide,okhttp)

27. 一个整数,打印二进制多少个1 。说思路不用写(说了2种,问还有嘛,最后说了3种,问 还有吗 没了….)

28. 字符串反转。说思路不用写(说了3种 还有嘛。。没了。。。)

29. 自我评价

30. 性格呢

31. 反问:评价下我: 你的自我评价很正确。。

本来以为应该会有二面,但是一直没有消息。没通知过也没通知说挂了。就默认他挂了。

跟谁学

跟谁学一面 28min

跟谁学初面 4月1日 19:00(28min)已Offer

1. 闲聊了一会

2. 什么是线程,什么是进程?

3. JDK & JVM & JRE分别是什么以及它们的区别?

4. 什么是面向过程 & 什么是面向对象 & 区别?

5. 谈谈你对this和super的认识。

6. 静态属性和静态方法能被继承吗?静态方法又是否能被重写呢

7. Java多态的实现机制是什么

8. static关键字的作用?

9. final关键字的作用

10. 基本类型的初始化值为多少?引用类型的初始值为多少

11. 能说说多维数组在内存上是怎么存储的吗?

12. Error和Exception的区别

13. 给我例举至少5个常见的运行时异常

14. 如果读取一个txt文本文件乱码了,你觉得原因是什么

15. Map的遍历方式有哪些?

16. 你觉得Lock和Synchronized的区别是什么

17. 四大组件是哪四个

18. 如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity

19. 你了解ViewPager2吗?和ViewPager 1有哪些区别?

20. Android中的动画分为哪些种类 & 特点 & 缺点。

21. 在做悬浮窗的时候你遇到了什么困难

22. 说说Android中一些屏幕单位

23. apk为什么需要签名

24. Flutter

25. Android中播放视频音频的方式有哪些

26. 说说你知道的查找算法

跟谁学二面 30min

4月9日 跟谁学二面 10:00 30min(时间不算算法,算法在视频之前在线做的)

1. 自我介绍

2. 有什么offer

3. 家里同不同意你来北京 有没有兄弟姐妹

4. 学校分数

5. 排名

6. 对我们公司有什么了解

7. 线上教育线下教育的优缺点

8. 最有挑战的事情

9. 怎么解决

10. 朋友怎么评价你

11. HTTP(从协议,状态码,1.0/1.1跟2.0 扯了一堆)

12. 最消极的词评价自己

13. 最近看的3本书

14. 学到了什么

15. 最有成就感的事

16. 为什么这件事给你成就感

17.

17. 知道我们公司有哪些竞品吗

18. 觉得自己三个短板,怎么克服

19. 刷了多少LeetCode

20. emmmmmm 还有些忘了

21. 反问环节:算法:统计使用数 TOP 1 的标签。现有数据:[{tagName: 'p'}, {tagName: 'div'}, {tagName: 'p'},

....],请统计出现次数 TOP 1 的 tagName。

我大四就到国外去读书了,从来没有实习过(出国前的暑假确实有时间可以去实习,但是都被我浪费掉了) 所以相对于

一直在国内的同学,大四就开始实习,在这一块有着明显的劣势。

之前学校里学的都是什么数据挖掘机器学习这些,跟我要找的安卓开发,知识上还是差的挺多的。以前很多学过的也都忘

记了。

所以我基本上是从头开始学的。我看的书大概就这些

操作系统:深入理解计算机系统

计算机网络 : 谢希仁的计算机网络

数据结构和算法: 这个看的是B站上尚学堂的韩顺平的课,我觉得讲的还不错。

Android:Android的进阶之光

算法:剑指和LeetCode

在总结几点需要注意的吧:

1.简历上一定不要写自己不会的东西!否则你会被问到怀疑人生!

2.简历上不要轻易的写熟练!否则你也会被问到怀疑人生!

3.面试过程中学会引导面试官很重要,一定要你占有主动权,这样你才能把你会的说出来。一般面试官不打断你,你就继

续说,能说多久说多久。这样会让面试官觉得你很有钻研精神。

4.找个靠谱的内推人非常重要。不仅能给你很多帮助,并且在你焦急等待的时候也有人能问问。

6.记得录音,面试结束后复盘,听听自己当时的回答,然后总结反思怎么做的更好

总的来说我的春招到此结束。周一就要入职了(去了[跟谁学)。回想一下,还是觉得挺有意义的。面试过程也是一个成

长的过程。一次次的挑战自己,怀疑自己,完善自己的过程。这个过程十分痛苦,但是一定要相信自己,坚持走下去,一

定会有胜利的那一天。

最后希望各位同学们最后都能拿到自己心仪的offer

阿里

阿里一面 50min

(笔试做的比较差)

自我介绍

Android学习方式

对源码是否了解(Android Java)

源码

Handler消息机制(具体涉及到的类 & 细节)

HashMap(数据结构 & put操作)

HashMap扩容时间复杂度

ArrayMap

JVM

Java内存区域

堆栈区别

哪些区域线程私有,哪些共享

栈帧

方法调用时的入栈出栈操作

Java

并发访问:

1. volatile(只保证了可见性和有序性,不能保证原子性)

2. synchronized:修饰代码块/方法/对象的区别? (单例模式DCL会不会失效?)

3. Lock

Android

Activity生命周期(具体执行,涉及到哪些类?)

ANR(什么是ANR?怎么监测,运行前,运行后,线上监测?)

事件分发机制

消息机制

View绘制流程(具体原理,包括不限于绘制三大流程)

Handler(怎么实现多线程?为什么Looper死循环没事?怎么实现线程间通讯?)

操作系统层面死循环是怎么回事?

死循环一定会导致ANR麽?

项目

项目线程同步的优化

session/cooike/token/上传凭证的区别

使用人数/有无上架商店

有无IM通讯模块

登录模块是怎么解决的

如何优化千万级别用户下让用户实时知道自己状态(APP端 & 服务器端)

腾讯

因为是在字节三面第二天面的,回答包装类有点模糊,当时直接哭了,让面试官压力很大

猫眼

猫眼一面

1. 简单自我介绍

2. 自定义view的方式,说了继承绘制,在style文件中写属性,还问有什么???(后来才想到组合式

3. 线程间的通信方式:说了handler,Rxjava,共享变量加锁,问我还有什么???

4. 他又强调说子线程传递消息到主线程,我下来才想到可能想让我说接口、广播

5. 项目中有没有多线程使用的场景,说了网络读取消息

6. 子线程中如何获取handler (我??

7. 如何创建一个handler,Looper.prepare

8. 接口和抽象类的区别

9. 抽象类可以用final修饰吗(不可以

10. 接口中default修饰的方法有什么作用,为什么要有这个关键字

11. 平常用过什么集合

12. ArrayList原理、扩容机制

13. List线程安全的实现(我说只关注到hashtable、concurrentHashmap

14. 问我这两个集合有什么区别

15. LinkedHashmap 和arrayList有什么区别

16. 能不能自定义一个String类,能不能修改String类(不能,String是final修饰的

17. set和map的区别

18. hashmap的原理,怎么获取索引

19. 如何停止一个线程(所以到底怎么停止一个线程??!!

20. 你了解什么设计模式

21. 手写双重校验锁,volatile的作用

22. 疯狂怼synchronized加锁,各种加锁来一遍

问了技术栈,还是java 主要是对接美团

和面试官仿佛不在一个频道,总没回答到面试官的点上

估计也凉了

CVTE

CVTE一面

1. 自我介绍

2. 问项目,实习项目主要是什么

3. 问Retrofit,我说我不会,我说了okhttp拦截器、连接池之类的

4. NIO、BIO(不会

5. 三次握手

6. TCP和UDP的区别,UDP在哪里使用

7. TCP滑动窗口

8. 五层模型

9. IP协议是不是可靠的,在哪一层

10. 应用层有哪些协议

11. java怎么使用tcp,socket,线程阻塞读取流

12. 输入url会发生什么

13. kotlin协程(不会

14. Handler,为什么会内存泄漏,为什么非匿名内部类会隐式持有外部类的引用,怎么解决

15. Handler.postDelay实现原理

16. Looper.MainLooper什么时候调用

17. Looper为什么不会阻塞线程

18. JVM垃圾回收,大对象会分配到哪个代,为什么

19. 双亲委派模型,为什么

20. 四种引用

21. ThreadLocal

22. hashmap的实现原理、扩容机制

23.

开通会员 本次下载免费

所有资料全部免费下载! 推荐用户付费下载获取返佣积分! 积分可以兑换商品!
一键复制 下载文档 联系客服