字节跳动安卓实习一二面面经
11.11 更新:已挂。官网状态终止
-------------------------------------------------------------------
一面:【一小时】
- 自我介绍,无项目
- http,https,区别
- tcp是哪个层,和udp区别
- http get 和 post
- jvm 内存
- 进程线程
- cpu 调度算法
- hashmap 扩容,为啥是 2 倍,为啥 size 是 2 的幂次方
- 其他忘了……实在太混乱了,但是都是基础问题
- 算法:给定一个整型数组array和一个加和 n,是否存加和为 n 的三个数,O(n2)就可以,写出来了。
让我等一会,二面面试官马上来。因为我很饿,又好累电脑还没电了就只能硬撑了。
二面【一小时】
- 自我介绍
- 先写一个算法题,一个数组,有正有负,是否存在一个三个数的子序列,并且严格递增,解释了一下子序列,解释了一下严格递增,O(n2)写了,让优化……提示提示提示,我死活想不出来,这时候面试官的提示越来越高大上,提示包含关系,提示命题的逆否,提示到我越来越想不起来……过了很久很久。然后说我们下一个环节【此时已经知道肯定没戏了】【力扣334】
- 线程池,线程池参数,从提交任务开始的过程
- jvm线程怎么调度的
- 线程生命周期,我说到中间他就会打断说那这个情况怎么出现呢,java怎么实现的,如何结束线程?提供了什么方法
- java 的锁怎么实现的?
- 显式控制各个线程竞争的有哪些对象呢?
- 问操作系统一定有线程吗?
- static、final、finalize、finally?
- 设计题,讨论一下,如果我们要自己做一个在线合作文档,类似腾讯文档,有两个需求,一个是多个人在操作的时候尽可能快的要让另一个人去看到前面人的改动;另一个需求是要处理所有人操作的竞争问题,你是怎么想的呢?excel直观,如果是一个doc类型在协作呢?
- 时间差不多了,反问。
感觉还是不难,算法题也不难,但是脑子卡了没办法。