前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研究实习生历时2个月成功拿到字节&腾讯Android岗offer,应届小白看这个指南就够了!

研究实习生历时2个月成功拿到字节&腾讯Android岗offer,应届小白看这个指南就够了!

原创
作者头像
Android技术干货分享
修改2021-04-26 10:17:21
1.1K0
修改2021-04-26 10:17:21
举报
文章被收录于专栏:Android技术分享Android技术分享

这里简单说一下我的个人情况:

本人本硕985软件工程,17年毕业后在TP-Link做过接近一年的安卓开发,后来才辞职考研回母校继续提升自我。原本是打算找一份算法的实习,但今年算法岗的形势不容乐观,竞争激烈。所以在2月初决定把重心放在开发上,做自己喜欢的安卓,然后就开始投递简历了。

2月初的时候很多大厂都还没开始招聘暑假实习,我就在牛客网上找大厂的内推贴来看,当时字节跳动每天都有十几个内推贴,甚是疯狂!我就找了三四个字节的内推邮箱发去了自己的简历。大概2月7号发的简历,10号就收到了来自北京的HR约面试的电话,邮件中给的是牛客的视频面试链接。然后14号连着一面二面,完了直接电话约三面,16号三面完,当晚8点收到了HR的Offer Call。(三次技术面)

大概到了3月3号决定投一下base深圳的腾讯,4号官网投递了简历,然后约了9号一面,接着12号二面,当晚三面的面试官加了QQ,约了15号三面。接着17号HR面,最后19号晚上8点顺利收到HR的Offer Call。(三次技术面 + HR面)

字节跳动 - 安卓开发岗

一面(45min)
  1. Activity的创建流程与原理(OnStart、OnCreate、OnResume等)
  2. Handler的原理(Handler、Looper、MessageQueue等)
  3. View的绘制过程(OnMeasure、OnLayout、OnDraw)
  4. Binder机制以及原理(binder驱动、共享内存等)
  5. 谈谈设计模式(23种设计模式,MVC和MVP的区别)
  6. 谈谈对操作系统中的进程的理解
  7. 操作系统中有哪些跨进程通信(IPC)的方法(信号量、管道、共享内存等)
  8. 讲讲Java中类的加载过程

还有一些问题遗忘了,最后是做一道编程题,二叉树查找相关的,用递归完成了。

二面(60min)
  1. TCP三次握手原理及细节,谈及为什么不能两次握手的原因
  2. ShareReference的用法和原理
  3. Java垃圾回收的过程
  4. 内存泄漏问题(Java中static引起的内存泄漏问题等)
  5. JVM内存管理相关问题
  6. 智力题:两个骰子(6面)如何表示2月全部日期

还有一些非常难的Java方面的问题遗忘了,编程题考查二叉树Z字型遍历,不能用STL库。

三面(30min)
  1. Activity的创建原理,谈及ActivityManagerService偏Framework层的理解
  2. 谈谈WindowManagerService的工作机制和原理
  3. 谈谈读过哪些开源的安卓库源码
  4. 数学题:两个人轮流投掷硬币,规定正面赢,正反面各50%概率,计算先投的人获胜的概率(用级数去解决)
  5. HTTP和HTTPS原理,区别,各自的优势
  6. 谈谈对token的理解

这次面试没有编程题,很简短但是较为严肃,前两次气氛都较为轻松。

HR电话(10min)

简单聊了一下以前的工作经历和学习经历,为什么辞职考研,对未来的职业规划,然后就介绍公司的待遇和福利等等,发了口头Offer,三天后邮件正式Offer。

腾讯 - 移动客户端开发岗

一面(60min)
  1. 自我介绍后直接聊起了以前在TP做过的两个项目。 第一个项目问到了设计模式中MVC和MVP的区别,ListView和RecyclerView的区别,如何用ListView实现RecyclerView等同的效果;第二个项目比较大,当时代码量有三千行左右,从Framework层到应用层都有涉及,然后问到了跨进程通信,一个大的数据包跨进程通信中如何保证安全(拆包、安全校验等)
  2. Java的类型擦除
  3. HashMap的原理(哈希映射、冲突解决的方法等)
  4. 安卓的一系列基础问题

这次面试非常注重过往项目的经验,还有些问题遗忘了,编程题两道:中序和后序推导出前序(二叉树递归完成)、给出一个链表删除倒数第五个节点

二面(60min)
  1. 谈谈对Handler、Looper的理解,他们俩的数量关系
  2. Java中内部类和静态内部类的区别
  3. Java的泛型擦除问题(因为一面没答好,二面又重新拿出来问我了,还好我提前准备过)

这次面试非常注重基础知识的考察,当然有很多问题遗忘了,编程题是:数组中每个值看作一栋楼的高度,站在数组中的一个位置求前后能看到的楼的数目(高楼挡在前面会看不到后面的楼)

三面(1h20min):
  1. 谈谈以前自己的学习方式,有没有读书做笔记的习惯或者写技术博客的习惯等
  2. 谈谈以前在学校做过的项目(本科做过两个科研项目,NLP、EEG,我都分别详细讲了)
  3. 谈谈之前在TP工作的项目,每个项目的时间分配和具体流程,包括技术细节,以及遇到的比较困难的问题,还有自己的成长
  4. 谈谈Activity的原理,生命周期(面试官希望我答出Native层的原理,虽然我读过安卓源码的书籍,但当时一紧张就答得不太全面)
  5. 广播的收发过程,如何做一个有序广播
  6. 谈谈对四大组件的理解
  7. 讲一下HashMap的原理(为什么到了8个节点就变成红黑树)
  8. 以前做过哪些优化相关的工作
  9. 谈谈webview的原理和通信机制
  10. 概率题:x%的人喜欢篮球、y%的人喜欢排球、z%的人喜欢足球,问同时喜欢篮球和排球的人是多少

这次面试从家庭背景学习情况问到过往项目,再问到基础知识,真的细致入微哈哈~当然还是有些问题遗忘了,中间还问了能过来实习的时间。最后编程题是:两个超大的字符串文件,求他们的最长回文子串,要求不能调用库(当时用动态规划完成,但是时间复杂度为N^2,其实用马拉车算法可以降低复杂度,但当时我并没有练过,所以就把代码交上去了)

HR面(30min):
  1. 首先自我介绍一下,谈谈能过来实习的时间
  2. 辞职考研的原因
  3. 考研之后的半年做了啥(当时我在研究生入学前实习了一下)
  4. 讲讲之前在TP工作的成长
  5. 谈谈本科到现在的学习方式(在学习课本知识的过程有没有自己打代码实现demo之类)
  6. 研究生阶段学习成绩如何,排名什么位置
  7. 上学期参与了实验室的什么项目,具体负责什么
  8. 谈谈自己的优缺点
  9. 相比其他实习生,觉得自己比他们的优势的地方
  10. 谈谈之前面试的三个面试官,逐位评价一下
  11. 上一份TP的工作是校招的吗?当时还有没有面试其他公司?当时面试公司这么少是处于什么考虑的?
  12. 现在实习还有没有找别的公司,有没有拿到其他公司的Offer(这里我如实说了字节跳动的Offer)
  13. 对比腾讯和字节跳动,谈谈自己的想法,会如何做选择,选择的原因是什么
  14. 最后,觉得腾讯为什么需要你?

总结和给各位同学的建议

无论是本科生还是研究生,实习生还是正式工作(社招除外),面试永远考察的都是基础!所以万变不离其中,好好复习计算机学科相关的基础知识,特别是常问的那一系列问题,每次面试完立刻复盘,查缺补漏。不要害怕失败,每次的失败都会换来一段成长,这是非常宝贵的~然后编程题,平时花些时间上牛客或者leetcode刷一下题就好了。

面试的时候,保持自信心,回答问题不要着急保证思路清晰。然后对每个问题都诚实回答,不会的不能装懂,可以谦虚请教面试官。最重要的是,坚定自己的目标,不要因为一两次的面试失利就影响到自己的情绪和状态,不断的总结失败的原因,总有一天会收到心仪公司的Offer。最后祝各位Offer收到手软!

面试复习路线

接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用

帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。

从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节:

多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

架构师筑基语言基础

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

NDK模块开发(音视频开发系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

Flutter学习进阶

2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

微信小程序开发

微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

Android相关源码解读

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

Android BAT高级开发面试题及答案解析

面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字节跳动 - 安卓开发岗
    • 一面(45min)
      • 二面(60min)
        • 三面(30min)
          • HR电话(10min)
          • 腾讯 - 移动客户端开发岗
            • 一面(60min)
              • 二面(60min)
                • 三面(1h20min):
                  • HR面(30min):
                  • 总结和给各位同学的建议
                    • 面试复习路线
                      • 架构师筑基语言基础
                        • 设计思想解读开源框架
                          • 360°全方位性能调优
                            • Android框架体系架构
                              • NDK模块开发(音视频开发系列)
                                • Flutter学习进阶
                                  • 微信小程序开发
                                    • Android相关源码解读
                                      • Android BAT高级开发面试题及答案解析
                                        • 以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
                                    相关产品与服务
                                    云开发 CloudBase
                                    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档