2018Android大厂面试经验

2017年是转折的一年,2018年算是收获的一年,趁着金三银四开始找工作。先分享一下offer的情况

阿里高德(offer)
爱奇艺(offer)
腾讯视频(offer)
小米(被拒)
今日头条(被拒)
在面试的过程中我深深的感受到,对于一个优秀的安卓开发来说,首先摆在第一位的还是他/她作为一个软件工程师的基本素养。无论你是做前端还是后端,最后定义你的优秀程度的还是作为软件工程师的基本素养,学习能力和编程能力,还有设计能力。

下面分享一下各个公司的面试题目

爱奇艺

Android消息机制
Android View绘制流程,当一个TextView的实例调用setText()方法后执行了什么
Android dalvik虚拟机和Art虚拟机的优化升级点
Android屏幕渲染机制
热修复的原理,你都了解过哪几种热修复框架
OkHttp的原理
Android 线程池的实现原理
JavaGC机制
HashMap的实现机制,怎么样HashMap线程安全
可重入锁的实现,公平锁非公平锁都是什么定义?
都用过那些常用的数据结构,说说对树的了解?
Activity启动模式,allowReparent的特点和栈亲和性
WebView优化
有没有Jni使用经验
有使用过RxJava吗?
说说你对设计模式的理解,开发过程中主要用到了哪些设计模式?
快排写一下,动态规划了解吗?
小米

冒泡排序的链表实现
写个快排
写个单例模式
Activity启动模式
异常生命周期
从点击应用图标到进入应用,Android系统都做了哪些工作,期间涉及到的进程切换有哪些?
说说你了解的IPC方法
说说Binder的大体实现
怎么控制另外一个进程的View显示
广播中怎么进行网络请求
说说Android中线程池的实现
HashMap如果Hash冲突了怎么解决?
双线程通过线程同步的方式打印12121212…….
腾讯

HTTPS是怎么实现的?
Android事件传递流程和OnTouchListener的关系
Activity启动模式
Android线程池实现原理
双指缩放拖动大图
客户端网络安全实现
Webview优化
Android应用保活
RemoteViews实现和使用场景
RecyclerView绘制步骤和复用机制
Binder的大体设计模式
Activity遵循什么设计模式
EventBus源码解析,遵循什么设计模式
Handler为什么会发生内存泄漏
Java内存模块分区和GC机制,GC算法有哪些
Finalize机制
强引用 弱引用 软引用 虚引用的区别和使用场景
LeakCanary的使用和实现原理
介绍一下你在开发过程中使用到的设计模式
快排
对服务器众多错误码的处理(错误码有好几万个)
阿里

Android消息机制
Android事件传递流程
Android View绘制流程
Activity启动模式
Android IPC机制
Android线程池设计原理
EventBus源码和设计模式
Android应用保活
Android UI优化
Android启动优化
快排 堆排 单例
进程线程在操作系统中的实现
HTTPS的组成是什么?
ClassLoader的双亲委托
Android中的ClassLoader
有过Jni使用经验吗?
有过跨平台开发经验吗?
今日头条

视频加密
Android Native Crash
视频组成
播放器原理
共同问到的

为什么离职
开发过程中遇到最深刻的BUG是什么
当你的开发任务很紧张,你怎么去做代码优化的?
怎么和你的同事沟通
你对某某某互联网发生事情的看法?(直播答题等等)

作者:神奇的小蘑菇
链接:https://www.jianshu.com/p/7b35a47822f8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### 回答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、付费专栏及课程。

余额充值