offer求比较+部分大厂Android面经+真题解析(1)

面经分享

下面是OPPO技术面的面经(总体感觉上好像并没有什么特别的难度吧)

其他公司的面经另外有做整理,有兴趣的朋友可以自己去看
【指路 ↓】
【https://www.jianshu.com/p/4d30f01372c9】

一面
  1. 常 见 的 Activity 类 型+描述Activity 生命周期
    Activity 从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回 调方法,这些回调方法包括:onCreate onStart onResume onPause onStop onDestroy 其实这些方法都是两两对应的,onCreate 创建与 onDestroy 销毁; onStart 可见与 onStop 不可见;onResume 可编辑(即焦点)与 onPause。。

  2. 两个 Activity 之间跳转时必然会执行的是哪几个方法?
    一般情况下比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候, A 会调用 onPause()方法,然后 B 调用 onCreate() ,onStart(), onResume()。 这个时候 B 覆盖了窗体, A 会调用 onStop()方法. 如果 B 是个透明的,或者 是对话框的样式, 就不会调用 A 的 onStop()方法。

  3. 系统是怎么帮我们启动找到桌面应用的
    我说通过意图,他说怎么找到是哪个意图? 我说 PMS 会解析所有 apk 的 AndroidManifest.xml ,如果解析过会存到 package.xml 中不会反复解析,PMS 有了它就能找到了。

  4. 横竖屏切换时 Activity 的生命周期
    跟清单文件里的配置有关系。
    不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生 命周期默认首先销毁当前 activity,然后重新加载。
    设置 Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切 屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法。 通常在游戏开发, 屏幕的朝向都是写死的。

  5. 屏幕适配的处理技巧都有哪些
    手机自适应主要分为两种情况:横屏和竖屏的切换,以及分辨率大小的不同。

  6. 网络优化的问题
    同一个 ip 同一个端口能复用一个连接,后面问道了 http 2.0 的多路复用,我说一个 tcp 可以多个请求,原理呢?我说不知道。后面让我说了下 https 。

  7. 快排和递归

  8. 数组和链表的区别

二面

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

2.使用安卓数据库时,有哪些生命周期方法:onCreate、onUpgrade

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

  • 方法1:通过alter table add column来做

  • 方法2:先给旧表改名,然后建一张新表包含新的字段,再将旧表数据迁移过去,最后删除旧表

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

  • 读操作是线程安全的:多个线程或进程读取同一个数据库的内容,是可以的。

  • 写操作多个线程操作会抛异常(我感觉这里不能直接说线程不安全吧,因为SqlLite确实是有锁机制的):在多进程或多线程中使用sqlite,同时操作同一个数据库的话,会导致异常抛出。不同线程或实例化多个SqliteOpenhelper来操作同一个数据库,也会导致同样的问题。但不同线程使用同一个sqliteopenhelper来获取SqliteDatabase进行操作的话,是可以的。

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

commit方法是有一个boolean的返回值,当数据变化进行存储时是一个原子性的操作,当两个editor对象同时对一个共享的preferences参数进行操作时,永远都是最后一个调用commit方法的editor变更了最后的数据值。

apply方法是没有返回值的,当两个editor同时对preferences对象编辑时,也是最后一个调用apply方法的对象编辑数据。apply的提交操作也是原子性的,但是只提交到内存,速度更快。

6.Handler机制

7.HashMap、HashTable、ConcurrentHashMap的原理

8.计算机网络五层模型

9.http状态码

10.你遇到的最难解决的问题?
我说实习公司项目没有采用动态加载框架,但是后面集成 U3D 项目需要动态加载,但只需要用到 so 和资源动态加载,功能上第三库也不支持我们的需求,我就自己硬着头皮看了各大版本的源码,支持动态修复替换加载 so 和 assets 资源动态修复加载,然后把具体的细节说了一遍。

个人体会

**面试最重要的就是心态吧,平常心,不要紧张,**只有这样才能展现出自己最好的状态,过度的紧张会阻碍你的语言表达,最起码的一点,这会给人一种你很不自信的印象。

我觉得自己的面试之所以这么顺利,很大一部分原因是做了系统的复习吧。

我一开始也有些不自信,担心技术题会有自己不会的内容,担心最新的技术点不了解,担心被问到项目说不出,甚至担心自己的简历写得不够好。

但是,闭关一个星期,系统的复习了一整套后,自信又回来了。

【其实我的复习资料也是白嫖的,现在网上的资料虽然多,但是内容质量稂莠不齐,很难遇到这这么全面,有条理,有系统的资料了。附上白嫖地址:GitHub大家可以自己去取。】

全部资源有些多,不可能全部放上来,大家可以自己先看看对自己有没有用吧。

学习资源虽然可以免费分享给大家(反正一开始也是白嫖的一个培训机构的),但是还是要记住,凡事都要靠自己的努力,复习还是要靠大家自己去下功夫。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618165277)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

<think>好的,用户想要找关于Java大型企业试的资料或经验。首先,我需要根据用户提到的引用内容来整合相关信息。用户提供的引用中有提到HR考察候选人的方,比如性格、沟通能力等,还有具体的Java试经验和推荐的书籍,比如《Java核心知识》、《高并发与多线程》等。这些资料应该作为重点推荐。 接下来,用户可能需要知道如何系统准备试。根据引用内容,分阶段准备会比较合理,比如技术基础、项目经验和综合能力。技术基础部分需要覆盖Java核心、并发编程、JVM、数据库、框架和分布式系统,这些都是大型企业常考的内容。推荐书籍和文档需要对应引用中的资料,比如引用2提到的那些书籍,可以逐一列出。 项目经验部分,用户可能需要了解如何有效展示自己的项目,这里可以结合引用1中提到的合作能力和学习能力,强调项目中的难点和解决方案,以及团队合作的经验。综合能力方,引用1提到HR关注的点,所以需要准备行为试题,比如沟通和冲突解决,同时算法题也是大厂常考的,推荐LeetCode和《剑指Offer》。 另外,用户可能还需要实际的经分享,引用2提到了拼多多的试经验,可以建议参考类似的文档,并推荐技术社区如牛客网和掘金。引用3提到的学习资料包可能对自学有帮助,需要提醒用户注意资料的更新性。 最后,要确保回答结构清晰,分点列出,每个部分都对应到用户的需,同时自然融入引用内容,并在末尾添加引用标识。可能还需要生成相关问题,比如如何准备技术试、项目经验如何优化等,帮助用户进一步深入。</think>以下是为您整理的Java大型企业试资料与经验指南,结合高频考点和实际案例,分模块呈现: ### 一、技术能力考察重点 1. **Java核心技术栈** - 集合框架:HashMap红黑树实现与扩容机制(JDK8+)[^2] - 并发编程:线程池7大参数、AQS原理、ConcurrentHashMap分段锁优化 - JVM:G1收集器工作原理、ZGC停顿控制、内存逃逸分析 $$ \text{堆内存模型} = \text{Eden} + 2\times\text{Survivor} + \text{Tenured} $$ 2. **分布式系统设计** - CAP定理应用场景 - 分布式事务(Seata的AT模式、TCC模式) - 服务熔断(Hystrix vs Sentinel) ### 二、典型试题解析 **高频题目示例:** ```java // 双重检查锁单例模式(注意volatile作用) public class Singleton { private volatile static Singleton instance; public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` *考察点:内存可见性、指令重排序、锁粒度控制* ### 三、试准备策略 1. **知识体系构建** - 推荐书单:《Java编程思想》+《Java并发编程实战》组合学习 - 源码阅读:Spring IOC容器初始化流程、MyBatis执行器体系 2. **项目经验提炼** - 使用STAR法则描述技术难点 - 准备架构图绘制(Visio/ProcessOn) - 故障排查案例整理(如:Full GC问题定位) ### 四、大厂试流程揭秘 1. 技术(3-5轮) - 基础:手写算法(LeetCode中等难度) - 架构:系统设计(如:设计秒杀系统) - 交叉:跨团队技术方案讨论 2. HR核心问题: - 职业规划与团队适配度评估[^1] - 压力测试场景模拟(如:项目延期处理) ### 五、必备资源推荐 1. 文档资料: - 《Java试知识点解析》2023修订版[^3] - 美团技术团队《分布式系统设计实践》 2. 在线资源: - 牛客网历年真题库 - 极客时间《Java核心技术36讲》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值