关于android:开发菜鸟7面腾讯终于拿到offer

62次阅读

共计 7526 个字符,预计需要花费 19 分钟才能阅读完成。

前言

我在上一家公司工作了 3 年多,因为受公司平台技术选型的限度,本人的技术能力始终也没有失去实质性地成长,心想本人才 25 岁还比拟年老,不想把技术能力局限在这里,就想找一个更大的平台去开辟本人的视线,加上我始终对腾讯十分的向往,于是就有了 7 面腾讯。
去年一共面试了五次腾讯,不过都挂了,往年面了第六次第七次后,终于上岸了。头三次面试腾讯,口试做过后全副杳无音信。所幸也总结出了失败的教训,第四次胜利挺进二面挂(太不容易了),积淀了半年后,第五次跟第六次略微现实一点,不过也还是挂了。终于在我的坚定不移下第七次上岸了。上面我就含泪跟大家分享一下我的心酸面经过程。(不要问我为什么还记得这么分明,习惯面完复盘,勿杠!!!)

面试经验

第四次

一面
1.http 三次握手
2.java 内存机制
3.java 的垃圾回收机制(没答好)
4.string 的底层逻辑
5. 后端接管前端信息怎么解决?(始终没明确啥意思,没答复到点上)
6.java 线程的了解
7.java 线程平安呈现的起因
8.java 的动态存储原理
9. 数组和链表的存储形式
10. 算法题,快排(我原本会写,后果写完始终报错数组溢出,最初间接完结了)
11. 栈的存储形式
12. 栈和堆的使用场景

二面
1. 自我介绍
2.10 万个数如何找中位数
3. 介绍一下各种搜寻树以及查找时间复杂度(AVL 树,B/B+ 树,红黑树,二叉搜寻树,在没有进化为链表的状况下,都是 O(logn)
4.TCP/UDP 发一个大包有什么区别?
5. 均衡二叉树旋转的办法
6. 找一棵二叉树中两个节点的公共先人

第五次

一面
1.mmap + native 日志优化?
2. 播送和 EventBus 的区别?
3. 罕用设计模式你理解哪些?
4. 跨过程通信有哪些?
5. 简略讲讲 binder 驱动吧?
6. 跨过程传递大内存数据如何做?
7. 说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8. 启动优化怎么优化?
9. 你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter 方面的

二面
1. 单例设计模式都写写,动态外部类是怎么保障线程平安的?
2.synchronized 底层实现原理,ReentrantLock 偏心锁与非偏心锁。
3. 主线程期待所有线程执行结束,再执行某个特定工作怎么实现?原理和源码看过没?
4. 自定义 view 的个别流程,要留神些什么如何优化,点击事件和长按工夫别离是怎么实现的?
5. 四种启动模式,在源码剖析中的原理是怎么的?
6. 讲讲 bindService 的过程,你当初是怎么优化后盾服务过程的?
7. 开发中你都用到了哪些设计模式?说说过后具体的场景。为什么你要用办法工厂,另外两种呢?

三面
1. 讲讲 handler 的底层实现原理?
2. 说说你做的日志记录优化?
3. 你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端期待服务端解决返回的流程,如果要跨过程传递大内存数据你具体会怎么做?简略写一写吧。
4. 在公司做过哪些优化?
5. 过程中遇到的一些最难解决的问题?
6. 提到了动静修复替换加载 so,那你晓得怎么修复 class 吗?怎么修复资源呢?
7. 还有什么要问的?
(过后心田嫉妒忐忑,每天抱着手机,记不得是什么时候发现的状态灰了 …)

第六次

一面
1. 自我介绍
2. 自我介绍时说过本人看过 EventBus 源码,而后让我谈谈事件总线的了解。
3.EventBus 会有什么问题吗?
4.EventBus、接口回调、观察者模式的应用场景说一下。
5. 我的项目什么中央用到数据的长久化,说一下。
6.Activity 的生命周期,弹出 dialog 和一个 activity 的 dialog 生命周期有什么区别?
7.Activity 的启动模式,利用场景,而后举了很多微信的场景,让我去抉择用那种启动模式,说下理由。
8.Activity 过程的优先级。
9. 如何避免微信不被零碎杀死?
10.service 两种启动模式,区别
11. 两种启动模式,如果我在退出 Activity 的时候没有退出 service 会怎么样。
12. 设计一个图片浏览框架,(线程池,lru 缓存,brabra 的说了一堆)。
13. 有一个很大很大的图片加载到内存上,不能升高清晰度和压缩图片你怎么解决?(提醒我部分显示?我没懂)
14. 如何适配不同厂商的手机,而后设计模式,brara 又说了一大堆,最初还说到 jetkins 主动部署下面去了
15.AsyncTask 源码剖析,每个办法在哪个线程执行的?
(面试官说我不错,叫我今天筹备二面,电话一挂,我就欢快地去吃饭了。)

二面(二面总监 / 面委,因为散会,等了半个小时)
1. 上来大数相乘,我做的眼泪都快流进去了。
2.put 和 post 的区别,利用场景。
3. 看了我的 flutter 我的项目,我改了一个框架,问我这个框架。
4. 让你设计一个跨平台的框架,你怎么设计(这里我谈了 flutter 的架构)。
5.https 的流程。
6.fragment 的懒加载。
7. 一个商场里有一个电影院,你会把厕所建设在哪里,说一下你的理由?

三面 HR 面(又等了 20 分钟)
1. 自我介绍
2. 为什么抉择腾讯?
3. 对咱们理解吗?
4. 愿不愿意来
5. 家里的状况
6. 什么时候能够入职。

第七次(这次过了!!!记的也是最分明的)

一面【66min】
1. 自我介绍
2. 我看你这简历上的技能咋都写的是 Java 的货色呢?安卓的我的项目做过,SSM 的也做过,那你后盾开发和 Android 偏向于哪一个?
3. 说说我的项目,我看你下面有个我的项目做 App 的,有筹备 Android 方面的吗?
4. 有些 SQL 比较慢,你咋办?为什么有的 SQL 这么慢,说说你感觉导致 SQL 很慢的起因。
5. 内存透露?OOM?什么状况会 OOM?
6. 用过多线程没?说说咋用的。线程池晓得不?说说线程池的原理?
7 对 ArrayList 一个读操作,一个写操作,你用多线程咋实现。死锁你晓得不?你怎么解决?
8.volatile 晓得吗?volatile 的原子性?
9.Java 中的锁晓得哪些?
10. 线程之间通信的形式?
11.JVM 调优,说说你能从哪些方面着手?
12.JVM 和 GC 简略聊聊,联合 JVM 内存说说 GC。
13.HashMap 和 HastTable,HashMap 平安?不平安用什么?hash()?HashTable 是怎么实现平安的?
14. 我对你的 Java 根底有了一个理解了,上面咱们问问网络相干的常识,计算机网络应该学过吧,那说说 TCP 三次握手?第三次握手能不能去掉?UDP 和 TCP 的区别?
15. 你晓得长连贯吗,说说?为啥用长连贯?
16.HTTP1.0 和 HTTP2.0 的区别?说说 NIO?
17.HTTPS 晓得吗?说说 SSL?
18. 好了,网络聊到这里吧,咱们说说算法之类的吧。跳台阶晓得吧,怎么做啊。
19. 一个链表,让你找最两头的节点,你怎么找?
20. 两个大文件,一个比拟大,一个比拟小,让你求交加,你怎么做?
21. 那么,咱们再问两个智力题吧,没有固定答案,不要限度本人的思路,想到啥说啥,一个粗细不一样的绳子,残缺的烧完 1 个小时,你怎么让他烧 15 分钟(不肯定烧完)。
22. 一副全新的扑克牌,按程序的,AAAA,2222,3333,这种,你怎么洗牌能洗散开?
23.C++ 和 C 理解吗?
24. 面试官问我啥时候有空,约下一面?
26. 闲聊,你有啥要问我的啊?问了好几个问题,问完了当前,面试官问我还有啥想问的,不想问问学习资源什么的吗??我就又问了好几个,而后跟我说了说面试的状况。就欢快的 say GoodBye 了。

问的问题(遗记程序了):

1)我问:还有下一面吗?面试官给我说了说前面啥状况,如果下一面过了,那么三面不会再写算法题了预计。

2)面试官问我:目前有没有 Offer?Java 后盾和 Android 你选一个,你做哪个?

3)我问:新人造就打算是啥?以及你们次要负责哪一块的业务?

4)面试官长期想到问我的:有人说 Android 端走下坡路,你怎么看啊?

5)给我说了说口试是啥状况。

PS:因为我算法太烂了,我就问口试对于是否进下一轮面试的作用大吗?他说,会占一部分,然而也不会全看算法。然而毕竟编程,代码程度不能够特地差吧,还是要有肯定代码功底的。

总体感觉:

面试的问题不是很难,如果不会,面试官会疏导你,他感觉我说的挺有意思的时候,还笑笑,这就让我更不缓和了。还有就是语速慢点,我可能太紧张了,叭叭的多还叭叭的快。

问问题的话,感觉还是尽量的去理解他们这个部门干啥,本人去了干啥比拟重要,毕竟如果面的好,能拿 offer,比拟 offer 的话,好比拟的。顺便也能看看本人对这个部门感兴趣吗。面试是个双向选择的过程,肯定要理解对方做啥,本人是不是有趣味等等方面。

以及答复问题的时候,尽量发散思维,结合实际的例子去说,这样会让面试官感觉你很棒,晓得的很多,也有本人的积攒和思考,如果答复一个问题照着网上看到的材料背下来,可能会让对方感觉是机械记忆,可能我答复问题的时候,尽可能把很多学习到的常识都串联起来讲进去了,所以面试官对我评估不错。一面没完结就间接约下一面,也是挺意外的。

二面【30+min】

我走进了面试的房间,等着面试官进来。过了一会面试官也进来了,问我设施调试好了吗。我说,好了,而后他让我点击哪儿哪儿的,开始共享屏幕,而后我靠,我点了之后,发现我 chrome 版本太低了,不行!我说,我浏览器版本有点低,道歉,之前了解错您(调试)的意思了,我认为须要用摄像头和话筒,我没留神浏览器版本也有要求。而后我说,等我换个火狐浏览器。

3s 换了浏览器我就开始筹备写了,面试官说,用你最相熟的语言写哈~ 一上来那个界面,main(),测试用例啥的得我本人写 ….

题目大略和 leetcode 59 题相似。大略如下,从右上角开始顺时针。剑指 offer 上也有相似的,反正就是刷题,刷题,刷题啊!!!

<pre class=”ql-syntax” from-niu=”default”> 输出: 3 输入: [[ 7, 8, 1], [6, 9, 2], [5, 4, 3] ]
</pre>

几个 while 循环解决的,也没和我探讨看看有没有啥思路,写好了,我就喊他,我问他,须要我说说下咋做的吗,他说不必,run 下,给我看看就行。然鹅我一开始写的时候就把 main 给删掉了 … 而后我就捣鼓了一下,run,边界溢出了,贼难堪。我就调试,调试了一会,他说,给你放松下要求,去 IDE 里调试吧。我没搭理他,持续找问题,怎么可能这么容易屈服于 IDE 呢。

嘿嘿,终于,发现好几个变量写错了中央。改了改,run,胜利 AC,他说,你这个输入格局和我想的有点差距啊,我说好的呢,我再改改。AC。那边终于给我竖起了大拇指,而后面试官就说这个题还有变种的。。。。。

这里不得不说,我在温习算法的时候,次要看了 b 站 yxc 大佬的视频,对我帮忙很大,还有怎么疾速排错,他本人开办的 AcWing 也挺好用的。还有就是一面过了之后,马上跟我的内推人沟通了下,他也给了点倡议,让我多刷 leetcode medium,而后我就大略过了 LeetCode 100 题外面的常见的题目大略 50 多道,还有剑指 offer 里的 60 道左右(有些太难的,我感觉不会出就没看,之前也有刷过剑指 offer,所以温习编程题还好)。口试之前,把剑指 offer 上的题思路都顺了一遍,保障本人见到就有思路,能先和面试官交换下本人的思路。

口试完了,跟内推人说了一声。过了一会,他跟我说,面试官对我评估不错,具体怎么样不能走漏,反正就是很好,让我好好筹备总监面吧。看到进复试了真的开心。
(遗记讲了第七次我是内推动的)

三面(60min)

大略是早晨快七点的时候,深圳那边给我打电话,确认身份,说感觉我前几面体现还不错,想约下一面,而后定了周三,跟我说下一面是技术面昂。不得不说,效率好快。

  1. 面试官上来又是一通确认身份。
  2. 说说 JVM 的内存吧,他们都是干啥的?对象怎么创立?
  3. 每个区域都会产生怎么的异样啊,谁会产生 OOM?
  4. 说说你对 GC 的意识吧。
  5. 晓得援用计数法吗?援用计数法有啥长处吗?毛病呢?
  6. 可达性剖析?
  7. 垃圾回收的几种算法?比拟一下。
  8. 你感觉垃圾回收有什么毛病?
  9. 说说垃圾收集器?有没有想过你说的这些垃圾收集器为啥会有这些毛病呢?
    (关机垃圾回收和 JVM 问的很具体很具体,有的问题记不太清了 …)
  10. 我看你还会这个 MySQL,那咱们来问问 MySQL 中的锁。你晓得有哪些锁吗?
  11. 行锁有啥用啊,绝对于表锁?
  12. 晓得 MySQL 次要的两种引擎吗,MySIAM 和 InnoDB 的区别,应用场景?谁有表锁?
  13. 看你理解 InnoDB,那你具体说说 InnoDB 吧。
  14. 面试官:我还问你点啥呢?我:那我说说我的哪个我的项目? 开始叭叭我的我的项目。没叭叭完,让我停下了。问我这些优化思路是你本人想进去的吗,我说咱们组两个人,思路是我想的。
  15. CPU 爆满了,你感觉操作系统会干点啥事件?
    (蒙蔽 … 答的不对,面试官给我纠正了下 … 而后就下个题目了)
  16. 那咱们再说说链表和数组?比拟一下它们有啥区别吧,而后再说说数组外面删除一个元素会怎么样,插入一个元素会怎么样,批改一个元素会怎么样,会产生什么事件?(这个中央说的不是很好 …)
  17. 平时用啥 IDE?晓得我的项目 run 之前干什么吗?
    (说了个编译和查看谬误,然而面试官仿佛还想让我说点货色,常识盲区 ….. 起初跟同学交换了一下,应该是预编译、编译、汇编、链接。)
  18. 编译期和运行期的区别?
  19. 指针理解吗?
  20. 十亿个数,一个数 4 字节,而后你怎么找最大的十个数?十亿个数,占多少内存?
  21. 操作系统中有哪些内存晓得吗?平时用什么 Windows 还是 Linux?
  22. 说说寄存器?
  23. 理解编译原理吗?晓得计算机组成原理吗?平时都学什么课?
  24. 一个人给另一个人发微信音讯,说说可能会产生哪些事件?
  25. 长连贯短连贯说说区别,你晓得的哪些是长连贯,哪些是短连贯?TCP 是短连贯还是长连贯吗?
  26. http 是基于什么实现的?1.0 和 1.1 什么区别?
  27. MTU 晓得吗?以太网帧晓得不?MTU 大小你晓得不?MTU 的组成你晓得不?
  28. TCP 和 UDP 是否牢靠,为什么不牢靠 or 为什么牢靠?
  29. 如果客户端长时间不发消息,那服务器端咋办?【差不多这个意思 …】
  30. 有 GitHub 吗?写博客吗?有本人搭建博客吗叭叭叭的【就是问你对技术酷爱吗 ….】
    (他问我为什么这些货色不写简历上,我说太菜了不值一提 … 面试官说,那你也得写啊,阐明你对技术酷爱啊,面试官笑笑。)
  31. 除了开发,你有没有思考过别的就任动向?比方什么 …..
  32. 你当初还在做我的项目吗?你们那个我的项目会去给他们做装置运维啥的吗?
  33. 你有啥要问的吗?

如何实现质的飞跃?

1. 技术积淀(学习 + 积攒)

我集体有本人的一套学习形式和习惯,平时喜爱利用碎片工夫来看点什么货色,比方一些技术性的书籍或文档,还有一些视频解说等,常常会让我有一种豁然开朗的感觉,对我的工作和前面几面腾讯也起到了很大的帮忙。

其实自己超容易缓和,所以面试的时候始终磕磕巴巴谈话说不出来,明明能想到总是缓和的说不出话。
好在面试官自己挺好的,很有急躁,并且始终在我焦急的时候疏导我说答案,无奈我太慌了😭心理素质怎么这么差,还好最终后果是好的。

面试总结

讲一下大厂面试一些必备的技能

1. 个别状况下第一轮都是根底面试,须要扎实的根底

  • 最罕用的 Android 基础知识
  • Java 基础知识
  • 理解一些 罕用货色的原理,例如:handler,thread 等
  • 我的项目中的技术点

2. 第二轮的时候须要理解更深层次的货色

  • Android 事件散发机制原理
  • Android 绘图机制原理
  • WindowManager 的相干常识
  • 过程间传输方式
  • Java 内存管理机制

3. 能进入第三轮根本没什么问题,然而要留神以下问题

  • 该轮个别是 老大或者部门负责人,问的问题个别都看 深度与广度
  • 当问及薪水的时候,要说一个适合的,小公司随便,大公司肯定要谨慎,当心里没底的时候,能够通知对方,让对方给一个正当的薪资。个别都是在原工资根底之上增长,听猎头说个别涨幅都在 15%-30%,超 NB 的能够要 30% 及以上,如果感觉本人还不错的,挺厉害的,倡议最高 20%,个别人就定在 15% 左右最靠谱。公司外部个别有一套机制,依据公司状况而定。
  • 咱们的面试准则就是拿到正当薪资,失去 offer
  • 集体倒退状况,这个问题很难答复,如果和公司方向不合乎,极有可能和公司无缘。倡议多试探性的问问公司短少什么,你是否给予公司对应的货色。当然对于有自我谋求的人,那能够放心大胆的提。我的方向就是开发,哈哈哈,挺极其的,别学我哦。我感觉抉择都是双向的,因而我晓得本人须要的是什么。
  • 你最善于什么 UI 还是其余什么?这个问题更不好答复。你要说你善于 UI,是不是意味着你其余能力就不行?尽管我不晓得面试官的用意,然而我能感觉到,这个问题不是那么好答复,我会答复说本人都行,来什么业务接什么需要。可能答复不太好,总之和公司的职位吻合就行,这样总不至于出错吧。

最初

其实客户端开发的知识点就那么多,面试问来问去还是那么点货色。所以面试没有其余的窍门,只看你对这些知识点筹备的充沛水平。so,进来面试时先看看本人温习到了哪个阶段就好。

对于常识梳理,这里再分享一下我面试这段时间的温习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

常识梳理完之后,就须要进行查漏补缺,所以针对这些知识点,我手头上也筹备了不少的电子书和笔记,这些笔记将各个知识点进行了完满的总结。

最初为了帮忙大家深刻理解 Android 相干知识点的原理以及面试相干常识,这里放上相干的我搜集整理的 24 套腾讯、字节跳动、阿里、百度 2020-2021BAT 面试真题解析,我把大厂面试中 常被问到的技术点 整顿成了视频和 PDF(实际上比预期多花了不少精力),包常识脉络 + 诸多细节。

还有 高级架构技术进阶脑图 帮忙大家学习晋升进阶,也节俭大家在网上搜寻材料的工夫来学习,也能够分享给身边好友一起学习。

以上内容均放在了开源我的项目:【github】中已收录,外面蕴含不同方向的自学 Android 路线、面试题汇合 / 面经、及系列技术文章等,资源继续更新中 …

3. 我的项目复盘

实际上,面试的一二轮所问到的技术问题,很多都是围绕着你的我的项目开展,因而在面试前最初要做好的一件事件就是我的项目复盘。对于我的项目复盘,我集体的思路如下,可供参考:

  • 你在这个我的项目中承当了什么样的角色?
  • 这个我的项目的背景是什么,如果是技术我的项目,为什么要做?
  • 有哪些技术难点,是怎么解决的,是否还有更好的计划?
  • 你认为我的项目中是否有能够改良的点?
  • 这个我的项目解决了什么问题,最好用数据谈话,这个数据又是怎么得进去的?

提前把思路捋一捋,下面这些问题好好思考或筹备一下,做到心中有谱当前,天然可能面试官聊得融洽,放弃一个好的心态,通过的几率就会更大一些。

正文完
 0