2024互联网寒冬之下,作为一个Android老码农,是如何进入腾讯的?

文章分享了作者参加不同公司面试的经历,详细列举了面试中的技术问题,包括Java、Android技术点,如内存管理、垃圾回收、组件通信等,并强调了系统化学习的重要性。
摘要由CSDN通过智能技术生成

按照面试的时间顺序来一一罗列各家公司的面试题。(记忆可能出现纰漏,哈哈,各位看看就好,有些公司的面试可能比较常规,就没有什么特别的印象)

武汉佰钧成(外包OPPO,自家面试官)

因为是周六的专场面试,也不用请假,所以马上就参加了这家公司的面试。 两轮面试

  • Activity的启动流程

  • Activity的启动模式,应用场景

  • 如何减少对第三方框架的耦合

  • hashmap的基本原理

博彦科技(外包OPPO,OPPO面试官)

两轮面试

  • Handler机制

  • Binder机制

  • 写一个单例模式,DCL为什么要加V关键字

  • 直接在Activity Sleep 5000ms,再post一个runable会不会ANR。

  • 如何监听ANR

  • View的绘制流程,每个都是干什么的

  • 事件传递机制

Insta360 (C轮公司)

三轮面试

  • 组件化如何实现组件通信

  • HashMap基本原理 如何减少hash冲突 如何增大hash冲突

  • 安装包怎么优化的

  • 如果有A,B,C,D,E五个步骤,每个步骤都需要操作对应请求,用哪种设计模式。

华为外包

两轮技术面试

  • 安装包优化做了哪些工作

  • 对加班怎么看的

本来一面完了就让我等着二面的,等了十分钟后跟我说二面面试官暂时不在,等下次再约时间,出门等了10分钟的公交,离家还有20分钟的时候,又给我打电话让我回去参加第二面,然后就没去了,太折腾人。

绿网科技

三轮技术面

  • hashmap原理

  • MVP,MVVM,MVC的区别是什么

  • Java Memory Model的内存模型

  • 如果让你设计一个app,打算怎么设计

  • JVM垃圾回收有哪几种算法,有哪几种垃圾回收处理器

  • Serial使用的哪一种回收算法

  • JVM的内存模型

  • Android主线程是怎么启动的

  • dex是如何转为机器码的

  • llvm编译是如何优化代码的

  • 说一个你自己的缺点。

最终结果是这样的 哈哈,还是不能要太高

同洲电子

四轮技术面

  • Activity的启动流程

  • 静态类的静态方法能不能被子类重写(不能,走的invoke-static指令,只有走invoke-virtual指令的才可能实现多态)

  • Linux的启动流程

  • 对Native层有没有兴趣

  • 对做智能家居有没有兴趣

  • 招一个应届生进来做app也是做,招你也是做,为什么要招你

顺丰科技

一轮技术面 总共三轮面试

  • handler机制

  • looper的唤醒是在Java还是Native层,怎么做到的

  • HashMap,ConcurrentHashMap,HashTable有什么异同

  • Binder通信机制

  • 跨平台开发熟不熟悉

  • 如何提高海外用户的访问速度,假设服务器在深圳。

  • 如何学习一个新东西,有哪些执行步骤

百度

  • 红包随机算法 是怎么做到的

  • 写一个二叉树的深度度优先遍历,递归 非递归

  • Android中LocalServerSocket是干什么用的

  • binder的Native层代码看过吗

  • Linux有哪些RPC机制

  • 为什么android使用了Binder机制没采用共享内存

  • 如果让你设计一套进程间通信的机制,你会怎么设计

  • Linux的模块动态加载机制是怎么实现的

  • 一个物理屏划分为三个逻辑屏,是靠谁来分发事件的。

  • ConcurrentHashMap是不是绝对的线程安全。(final,绝对线程安全,相对线程安全,线程不安全)

  • 线程池是如何管理线程状态的

大宇无限(C轮公司 前身是豌豆荚)

是我第二心仪的一家公司,办公环境,氛围,福利都好的一逼,可惜了 总共七轮面试 五轮技术面

  • Kotlin的访问权限

  • Koltin为什么比Java更安全

  • Koltin比Java好在哪

  • JVM的内存模型

  • JMM的内存模型

  • 为什么操作数栈是Thread-Private

  • 计算二叉树的深度

  • ArrayList跟LinkeList区别

  • ArrayList如何扩容的,如何提高ArrayList的效率

  • 动态代理静态代理区别

  • 启动优化怎么做的。

  • 如果给你个IOS APP,你打算怎么优化。

  • http有哪几种版本,版本间有什么区别。https跟http有什么区别。

  • apk为什么要签名,v1跟v2签名的区别

  • apk从编译打包都安装的流程

  • dex到odex为什么不能在编译期优化

  • 热修复原理

  • 你的优势是什么

平安

三轮面试

  • http2.0 1.1 1.0的区别

  • http如何保证安全性

  • 安装包优化有哪几种方式

  • 启动优化有哪几种方式

  • View的绘制流程,每个方法干什么的,如果要获取View的宽高,在哪个方法里获取

  • 如何应对弱网环境

  • android数据存储方式

  • 如果一个app无法访问网络,你怎么做数据存储。

  • DVM跟JVM的区别

  • React Native跟原生开发的优劣

腾讯

三轮面试 一面

  • 算法题 通电小球

  • Android 沉浸式状态栏 怎么实现的

  • 事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪个View重写?

  • ViewRootImpl接受事件吗?

  • apk编译打包流程 V1,V2 签名区别

  • 利用logging监听方法耗时,会不会让app增大延迟。

  • eventbus为什么要用CopyOnWriteList?

  • 插件化怎么加载资源的?

  • JVM怎么保证gc效率跟线程运行效率的 ?

  • 如果android没用对应的view,flutter能运行吗? 手写单例模式,volatile 跟 synchronized区别?

  • 接口暴露,但是不让别人调用,有哪些办法?

二面

  • 为什么采用flatbuffer? 比Json好在哪里?

  • 如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上报过程中再次产生Crash能不能捕捉到?

  • uncaughtException是被谁调用的,如果再次崩溃能不能捕获到?

  • Linux是怎么知道app崩溃的,如果想要在被kill前 做一些耗时操作,该怎么做?

  • 考虑设计一个crash捕捉模块。

  • 100万个数字求100个最大值。

  • 手写快速排序算法。

三面 (GM面)

  • kotlin比Java好在哪里,是函数式编程吗?

  • 如何防止DNS劫持?

  • 如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?

总结:

大厂基本上不太看重具体的技术,无论你是Java还是C++,比较看重思路与抽象的解决方案。

如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

在面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:

Java相关

1.容器(HashMap、HashSet、LinkedList、ArrayList、数组等)

2.内存模型

3.垃圾回收算法(JVM)

4.垃圾回收机制和调用 System.gc()的区别?

5.类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)

6.反射

7.多线程和线程池

8.设计模式(六大基本原则、项目中常用的设计模式、手写单例等)

9.Java 四大引用

10.Java 的泛型

11.final、finally、finalize 的区别

12.接口、抽象类的区别

如有需要全套面试题+解析,直接划到文末免费领取哦~

Android 相关

1.自定义 View

2.事件拦截分发

3.解决过的一些性能问题,在项目中的实际运用

4.性能优化工具

5.性能优化 (讲讲你自己项目中做过的性能优化)

6.Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)

7.缓存自己如何实现(LRUCache 原理)

8.图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关

9.SurfaceView、TextureView、GLSurfaceView 区别及使用场景

10.动画、差值器、估值器(Android中的View动画和属性动画 - 简书、Android 动画 介绍与使用)

11.MVC、MVP、MVVM

12.Handler、ThreadLocal、AsyncTask、IntentService 原理及应用

13.Gradle(Groovy 语法、Gradle 插件开发基础)

14.热修复、插件化

15.组件化架构思路

16.系统打包流程

17.Android 有哪些存储数据的方式。

18.SharedPrefrence 源码和问题点;

20.sqlite 相关

21.如何判断一个 APP 在前台还是后台?

22.AMS 、PMS

23.Activity 启动流程,App 启动流程

24.Binder 机制(IPC、AIDL 的使用)

25.为什么使用 Parcelable,好处是什么?

26.Android 图像显示相关流程,Vsync 信号等

如有需要全套面试题+解析,直接划到文末免费领取哦~

源码理解

Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节

img

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值