Android面经分享:三流本科毕业的我,39天面试拿到腾讯offer是一种什么体验?

爱因斯坦说过“耐心和恒心总会得到报酬的”,我也一直把这句话当做自己的座右铭,这句箴言在今年也彻底在我身上实现了。

每一个程序员都拥有一座大厂梦,我也不例外。而对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于二线城市的普通本科,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个末流本科渣渣也奋斗了起来,竟拿下了腾讯offer。

今天分享这波面经,主要是希望能够激励到同样被学历所困扰的技术人,能够对职业生涯和技术规划有一个参考价值,感谢!

我是6.28下午投的简历,从投送简历到面试结束一共经历三次技术面+一次HR面,耗时39天。

image

腾讯三次面经+HR面

腾讯一面面试题

  1. 自我介绍

  2. 安卓数据库你了解吗?

  3. 存储数据的几种方式:SharePreference、数据库、文件

  4. 使用安卓数据库时,有哪些生命周期方法

  5. 如果要给数据库增加字段,需要怎么做?

  6. 数据库读写是线程安全的吗?

  7. SharePreference的实现原理,是不是线程安全的,apply和commit有什么区别

  8. 详细说说Handler机制

  9. 计算机网络五层模型

  10. http状态码

  11. 算法题:有1000万人,有10000份新冠检测试剂,如何尽可能多的检测出来得新冠的人

腾讯二面面试题

  1. 介绍项目(问的我生无可恋,好在还是过了)

  2. 冒泡排序和堆排序

  3. 堆是什么结构

  4. 计算机为什么能算出1+1=2(答与或门,说对了,还问到描述1+1=2的模型)

  5. 消费者生产者模式

  6. 如果用普通list有什么情况线程不安全

  7. sychronized关键字修饰什么有什么区别

  8. 修饰实例方法,其他线程能得到该实例的其他实法吗

  9. volatile有什么区别,可以实现锁吗

  10. i++安全吗?

  11. 手撕代码:地图左上走到右下,有障碍,上下左右方向都可以走(是BFS或DFS)

  12. 换一题,两个子节点的公共父节点(找root和target路径的方法用递归,跟面试官解释了半天逻辑)

腾讯三面面试题

  1. 死锁,死锁检测算法

  2. 王者荣耀保证用户实时性共享画面,互相明白对方做啥操作

  3. 航班起飞最大数目

  4. 旋转数组

  5. 问项目,遇到的最大问题

  6. 怎么判断是不是平衡二叉搜索树

  7. 多线程访问同一内存的资源有什么问题需要注意?怎么解决呢?

  8. clone和直接下载zip压缩包的区别是什么?

  9. 手撕代码:求所有在数组中的A,A满足前面的数都小于该数,后面的数都大于该数

  10. 谈一下你做这个岗位的最大优势?

腾讯HR面

来面我的HR,是个非常漂亮的小姐姐。她问的也不太多,差不多半个小时就问完了,感觉她还挺害羞的。

  1. 你希望你工作的地方在哪个城市?

  2. 你最期望的薪资是多少?

  3. 对部门和面试官,你有什么建议?

后面扯了一点家常,也扯了一点职业规划,问我以后想往哪方面转型、这些的。如果HR这面你没有很大的问题,offer基本到手。

腾讯三面面试题答案:

因篇幅问题,面试题答案整理在pdf文档里,希望可以给大家做一个参考~

image

复盘总结和建议

其实面试过很多次以后,你就应该明白拥有以下几点,面试已经成功一大半了。

01—调整自己的心态,正确面对得失

面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职朋友们在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。

02—提升技术,扩宽知识

对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?

我把Android开发需要学习的知识点做了整理归类,希望可以给各位提供一些帮助:

Java基础方面:JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look锁、动态代理、引用

Android基础方面:四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。

Android扩展方面:ART、Apk优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK开发。

Android源码方面:Leakcanary、Eventbus

设计模式方面:面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式

算法方面:排序、二叉树、链表、栈和队列、二分、hash表、堆、数组/双指针、字符串处理、动态规划

网络知识:Http(缓存、Https、Http2.0)、TCP(三次握手四次挥手、socket)、类加载器

附上我搜集整理的Android知识点汇总(包括了Java基础+Android基础+Android进阶+Android源码+算法题及答案解析+设计模式+网络)+高级Android开发进阶思维导图,把技术点一层一层分化总结(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

————文章内所分享的①Android技术知识点汇总pdf可以进入我的Github里免费下载、阅读

Java基础方面部分截图

image

Android基础方面部分截图

image

Android进阶方面部分截图

image

Android源码方面部分截图

image

算法题汇总(部分截图)

image

网络知识(部分截图)

image

高级Android开发进阶思维导图

image

结束语

对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。

以上内容中我所整理的Android知识汇总和腾讯面试复盘PDF,————可以进入我的Github里免费下载、阅读