BAT集齐!Java/安卓暑期实习面经汇总
本人情况:大三本科生,去年暑假因为学校课程开始接触安卓,前后一共写过三个小项目。参与过一点实验室的项目开发,在其中负责一些小模块的实现。
在准备实习以及接受面试的过程中,牛友的面经对我的帮助非常大,在这里主要从一定要看和面试问题来分享一下。本贴持续更新~
需要注意的是,字节跳动是如果一面过了可能连着二面,二面过了连着三面这样,所以要提前准备齐全。或者直接和联系你的hr联系说接下来有事,调整时间。
OC情况
1. 腾讯CSIG事业部(OC,三工作日内答复
2. 蚂蚁金服大安全风险控制(OC 最后去了这里
3. 字节跳动(OC
一定要准备
简历
一份好的简历是十分重要的。其实我的项目经历并没有很丰富,99%也都是课程作业。但我建议大家写简历的时候不要概述的罗列自己大学期间所有的项目列表,挑选部分你觉得十分出彩的进行重点描述,在简历上可以用分论点的方式讲述你在这个项目中使用了什么方法实现了什么功能。
我是使用超级简历的大学生互联网春招简历模板编辑的,大概就是分教育经历/实习经历/科研经历基本技能几块,其实在简历上也就列出了3项目1研究经历。
另外在面试前一定要再挖挖看自己的项目,这个部分当时我是怎么什么实现的,现在有没有更好的方法对他进行改善,要表达出你对自己做完的项目并不是做完扔掉,你是把他当孩子一样一直继续努力去改善他。
知识点
这里主要总结不管哪里一定会问到的知识点
1. 线程(线程池的维护/Synchronized/线程进程区别/死锁和如何解决
2. Hashmap的具体实现
3. TCP/UDP的区别/HTTP相关知识点/浏览器输入网址之后的具体操作
腾讯
一面
1. 简单情况/自我介绍
2. 项目中具体实现(困难/细节/优缺点/改进方向
3. Java 3个特性(继承/多态/封装
4. Java private/public等权限范围
5. 数据存储容器类型
6. list和array的区别,各自的应用场景
7. Activity生命周期
8. Activity启动模式
9. HandlerThread
二面
1. 自我介绍/项目经历
2. C/C++/Java/Python各种语言的优缺点/适用场景/个人理解
3. GC的详细操作
4. 多线程,线程间通信
5. 进程与线程区别
hr面
1. 自我介绍/学校生活经历
2. 对自己要去的部门的了解
3. 未来规划
蚂蚁金服大安全部
笔试准备
leetcode刷了几道题,这里大概总结一下笔试的方向,可能不全。
1. 动态规划(非常重要
2. 回溯算法(全排列等
3. 数组/矩阵相关
4. 最小路程算法
简历评估
1. 自我介绍
2. 详细谈谈自己的项目经历
3. 你觉得项目中最难的是什么,你是怎么解决的
4. hashmap
5. 数据库中,where和having的区别
6. Synchronized
7. 积极锁和消极锁
8. 现场写题
//字符串分组输出 //输入:["eat", "tea", "tan", "ate", "nat", "bat"], //输出:[["ate", "eat","tea"],["nat","tan"],["bat"]]
一面
1. 自我介绍
2. 详细谈谈自己的项目经历
3. 数据存储容器类型,区别,应用场景
二面
1. 自我介绍
2. 详细谈谈自己的项目经历
4. 浏览器输入网址之后的过程
5. 几种基本的排序算法
6. 快排的时间复杂度/空间复杂度/稳定性
7. 描述一下冒泡/快排的实现原理
8. 你的优缺点
交叉面
1. 自我介绍
2. 详细谈谈自己的项目经历
3. 如果你做的app要上市的话,你觉得你还需要做哪些
4. 如果防止别人通过反编译你的apk获得你的服务端信息,从而连上你的服务器
5. 自己介绍一下和线程相关的知识点
6. 为什么要用双重锁来保证单例,而不是一个线程获取了之后就锁住
HR面
1. 自我介绍
2. 项目困难,现在有没有继续对项目进行改进,之后的改进方向
3. 未来规划
4. 优缺点,改进方向
5. 出国/保研/考研/工作的理解
字节
一面
1. 自我介绍
2. 项目介绍
3. final关键字
4. activity之间的切换/返回
5. 线程池
6. 死锁
7. 线程通信
8. 同步
9. http头
10. 笔试
//笔试1: // 写一个java多线程
//笔试2: char[] www.people.com.cn char[] www.elpoep.moc.nc //在原数组上操作,不使用 String 的类方法,不创建额外的空间(数组、堆、栈、对列等)
二面
1. 自我介绍
2. 项目介绍
3. 如果多图片进行压缩:bitmap
4. 如何正常显示图片
5. hashmap
6. 四大组件
7. contextprovider
8. android中多种数据存储类型的应用场景
9. 笔试
//笔试: // 你有一个函数random7可以等概率随机产生1~7中的一个值 // 现在用这个random7去实现一个random10.
三面
1. 自我介绍
2. 项目介绍
3. 项目中提到的纯自主实现的拍摄/实时预览是怎么实现的
4. 如果做登录界面,如何保证账号密码的安全性
5. GET/POST区别
6. 其他的HTTP请求
7. 线程池/线程池参数
8. 为什么要使用多线程
9. n个线程,应该开多大的线程池
10. 笔试
笔试: struct treeNode{ treeNode left, right; int val; }; //实现是否为AVL树的判断 bool isBalance(treeNode root){ }
反问总结
1. 觉得之前的面试过程中有哪些不足
2. 部门主要业务内容
3. 阅读源码的技巧
整体感觉下来,一定要有一个好的简历,在面试过程中其实感觉我的准备并没有很充分,完全是靠简历被捞。对自己不了解的问题,可以先表明自己不了解/没有尝试过,但可能可以猜测或者用自己一些课外知识尝试解答一下。
另外这里分享一点面试技巧/感悟:字节的笔试鼓励你和面试官进行沟通,你可以把你的思路和面试官进行分享,明确题目的意思和输入输出。
遇到不会的笔试题,可以尝试和面试官聊聊想法,分享一下你现在的一些想法和思路,面试官一般也会提示你。
另外还有一点,阿里的现场笔试一般都是压力笔试,虽然说会给你指定时间,但是你可以一直一直写下去,直到你觉得你写完为止,不要主动放弃或者中途叫停。
希望这些面试经验对牛友们有帮助,大家都能找到心仪的offer~