两年Android面试大厂上岸经

文章讲述了作者在多轮面试中遇到的技术问题,包括Java、Kotlin对比、数据结构、并发控制、Android技术栈、算法题、项目细节挖掘以及对面试技巧的反思。作者强调了业务项目经验和算法准备的重要性。
摘要由CSDN通过智能技术生成
  • 算法:判断一棵树是否是平衡二叉树

  • 算法题:给定一个链表L1、L2,每个元素是为10以内的正整数,链表表示一个数字,表头为高位。 求两个链表之差,以链表形式返回

  • Java和Kotlin的一些区别,Kotlin的缺点?

  • SurfaceView和TextureView的区别?

  • 了解过哪些插件化的实现?

  • 说说ARouter的原理

  • 两个业务组件模块之间,怎么实现相互调用接口?

  • 让你设计一个下载功能,实现多个大文件同时下载,考虑哪些(断点续传)?

  • 有没有音视频开发经验?

  • 怎么处理内存泄漏?强引用弱引用?LeakCanary原理说一下。

B公司二面(1h)

=========

  • 问更熟悉Java还是Kotlin,答Java,所以问的都是Java相关的一些题

  • HashMap扩容机制

  • Java volatile原理和作用

  • 乐观锁,悲观锁区别

  • 线程池工作原理,各个参数的作用

  • Android 三缓存是什么?为什么需要它

  • 讲讲做的业务开发中比较有挑战的项目

  • 还有一些比较常规的Android方面的问题,具体想不起来了

  • 算法题:查找单链表中倒数第k个节点。做完后面试官问是不是刷过这道题,那我再出一道吧…

  • 题:给定一台8核的手机,设计一个快速检索出sdcard下所有文件名为a的程序,返回一个列表

B公司三面(1.5h)

===========

  • 主要深挖项目细节,有些不太清楚的最好别提,不然被挖到了很尴尬

  • 平时怎么学习技术

  • 在之前的公司,你对自己的成长满意吗

  • 在面哪些公司,情况怎么样

C公司一面(1.5h)

===========

  • 不记得了。。

  • 算法题:给定一个排好序的数组,找出最左边的某个指定数字的下标。

C公司二面(40min)

============

  • 介绍项目,问一些细节。

  • 你认为Java和Kotlin的不同点,在编程范式角度再介绍一下区别?Java的lamda和Kotlin函数对象区别?

  • Kotlin协程为什么能以同步代码写出异步逻辑?

  • 在协程上定义了一个局部变量,为什么在其中的其他线程里的协程也能访问到?

  • JetPack Compose有了解过没?

  • 性能优化;ConstraintLayout为什么效果好?为什么多了层级,性能可能会差很多?

C公司三面(1h)

=========

  • 依旧是项目细节,三面比较长的时间都是项目

  • 为什么要离职,家是哪里的之类的问题

D公司一面(45min)

============

  • 主要聊项目细节

  • 线程池运行流程,你们平时怎么使用线程池?一个线程池够吗?

  • 觉得工作经验不长,说当应届生面的,要求低。。。

D公司二面(1h)

=========

  • 自我介绍

  • 不知道为啥,跳过了第二轮技术面,直接来了 leader 面。聊人生,聊性格,聊成才和氛围比薪资重要等等

  • 没有技术问题

一些总结

====

毕业时选择的是一家非一线大厂的公司,在这边工作的近两年时间里,业余学习了许多 Android 相关的专业知识(因为不忙),但是由于业务原因,且公司发展一直在走下坡路,我在项目上的经验比较欠缺,因此考虑进一家大厂继续磨练磨练自己。

这次面试也暴露出了我的一些问题,最主要的话还是业务项目经验上不太足,所幸面试到的公司基本上都通过了,可能是因为我在 Android 基础上还可以吧。面试也是一种能够快速地发现自己缺点与不足的方法,可以更好地提高自己。

关于算法题:个人感觉有些八股了,也比较讨厌刷题,只写了剑指offer和leetcode上hot前百中所有easy难度的题,以及几道中等题,总共估计不超过100道吧。。。面试的时候感觉算法题这块都不是很难,大概也许可能是运气好呗。

另外就是可以自己搞一些比较有亮点的地方,我的话是对 Android 图形系统这块比较熟悉,所以上面面试中有一些都涉及到了这个,像Surface这些,如果面试官也比较懂这块知识的话,可以聊的很开心。

觉得不错的点点昂。

最后的话就是 Android, Java, Kotlin 中一些常问的知识点了,这种就跟考试一样,有些东西可能有些八股味儿,不过还是得准备准备,其实也不用花太多时间,最主要的积累过程,都在于日常的工作和学习中。

我下面就分享一下我自己觉得有点用的资料和面试题大纲,感兴趣的朋友可以去我的GitHub上看看

Java知识点汇总

Android 知识点汇总

Android拓展知识点汇总

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。

image

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

image

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

[外链图片转存中…(img-nYaK9ghy-1712342703918)]

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中…(img-7DWCijJc-1712342703918)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: android面试大厂必考174题是一道比较常见的面试题,主要考察对Android基础知识的掌握和应用能力。 174题是关于Android中Activity的生命周期的问题。Activity是Android应用的基本组件之一,了解和掌握它的生命周期是开发Android应用的基本要求。 Activity的生命周期包括以下几个常用方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等。这些方法分别在Activity的不同阶段被调用,用于管理Activity的状态和响应用户的操作。 在回答174题时,可以从以下几个方面回答: 1. 对于Activity的生命周期的理解:就是回答上述的onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法的作用和调用顺序。 2. 对于Activity状态的切换:从后台到前台、从前台到后台时,Activity的生命周期方法的调用顺序是什么。 3. Activity被销毁的场景:Activity被销毁的场景有哪些,例如用户主动退出、内存不足等。 4. 懂得如何管理Activity的状态和数据:例如在onSaveInstanceState()、onRestoreInstanceState()等方法中保存和恢复Activity的状态和数据。 5. 扩展性问题:除了上述常用方法外,你还知道其他的Activity生命周期相关的方法吗?它们有什么作用? 通过以上几个方面的回答,可以较全面地回答174题。同时,结合自己在实际开发中的经验和实践,给出一些实际的例子和场景,能够更好地展示自己的理解和应用能力,提升面试效果。 ### 回答2: Android面试中,174题是一个必考的问题,考察的是对于RecyclerView中的Item动画的理解和实践经验。 RecyclerView是Android中常用的列表型控件,能够高效地展示大量数据。为了提升用户体验,我们可以为RecyclerView中的Item添加动画效果,使界面更加生动。 在实现RecyclerView的Item动画时,我们可以使用Android提供的默认动画效果,比如淡入淡出、平移、缩放、旋转等,也可以使用属性动画自定义动画效果。 当我们需要自定义动画效果时,可以通过RecyclerView.ItemAnimator类来实现。我们需要重写四个方法: 1. canReuseUpdatedViewHolder():判断是否可以复用已更新的ViewHolder。 2. animateAdd():为添加的Item添加动画效果。 3. animateMove():为移动的Item添加动画效果。 4. animateRemove():为删除的Item添加动画效果。 在实现这些方法时,我们可以使用属性动画,通过修改Item的属性值来实现平移、缩放等效果。同时,还可以配合插值器(Interpolator)来调整动画的速度曲线。 除了自定义动画效果外,我们还可以通过RecyclerView.ItemDecoration类来实现对Item的装饰效果,比如分割线、间隔等。这样可以让RecyclerView的布局更加美观和易读。 总结起来,动画在Android应用开发中起着重要的作用,可以提升用户体验。在面试中,了解RecyclerView的Item动画实现原理和实践经验是必备的。我们需要熟练掌握默认动画效果的使用,同时能够自定义动画效果,并且理解RecyclerView.ItemAnimator和RecyclerView.ItemDecoration的用法。 ### 回答3: Android面试大厂必考的174题主要针对Android开发相关的知识、技术和经验进行考察。下面我将对其中一些常见的问题进行回答。 1. 请介绍一下Activity的生命周期。 Activity的生命周期包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()和onDestroy()。onCreate()在Activity被创建时调用,用于初始化Activity的状态和布局;onStart()在Activity可见但未获取焦点时调用;onResume()在Activity获取焦点时调用,此时Activity处于运行状态;onPause()在Activity失去焦点、但仍可见时调用,通常用于保存数据或释放资源;onStop()在Activity不再可见时调用,可以做一些清理工作;onRestart()在Activity重新展示时调用;onDestroy()在Activity被销毁时调用。 2. 请说明Android中的四种存储方式。 Android中的四种存储方式分别为:SharedPreferences、文件存储、数据库存储和网络存储。 - SharedPreferences是一种轻量级的存储方式,用于存储少量的键值对数据,适用于存储一些简单的配置信息。 - 文件存储用于存储大量的非结构化数据,可以使用FileOutputStream和FileInputStream进行读写操作。 - 数据库存储使用SQLite数据库来持久化保存结构化数据,可以通过SQLiteOpenHelper来创建和管理数据库。 - 网络存储通过与服务器进行通信,将数据存储在服务器上,常见的方式有HTTP请求和WebSocket。 3. 请解释一下Android中的消息机制。 Android中的消息机制主要用于不同组件之间的通信和线程间的通信。它基于“消息队列”和“消息循环”的概念,核心类为Handler、Message和Looper。 - Handler:Handler负责发送和处理消息,通过sendMessage()方法发送消息,通过handleMessage()方法处理消息。 - Message:Message对象封装了消息的内容,包括消息类型和数据。 - Looper:Looper用于管理MessageQueue,不断从MessageQueue中取出消息并将其分发到对应的Handler进行处理。 通过使用消息机制,可以实现不同线程之间的通信,例如在子线程中下载数据完成后,使用Handler将结果传递给主线程进行UI更新。 以上是对部分Android面试大厂必考的174题的回答,希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值