Android面试专题

剑指金九银十:Android研发面试基础篇40题+不得不看的《多

2019-08-15  本文已影响169人  Android架构师丨小熊

金九银十到来之际,但很多人面试之前,可能没有在互联网公司工作经验或者说工作经验不多,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题问蒙了,最后惨败收场。
下述是我收录整理的Android面试题汇总,由于篇幅原因,在这只把基础知识点部分的题目列举出来,后续还会更新其余面试题内容,大家可以关注一下我,及时知晓我的更新,同时这份面试集锦的整理也花费了我很多时间,有需要答案的朋友可以继续往后翻,在文末会有免费便捷的领取方式,顺便还请您帮忙转发分享下,点个赞,让更多的朋友都可以看得到~

Android面试常问基础知识点

  1. 四大组件是什么
  2. 四大组件的生命周期和简单用法
  3. Activity之间的通信方式
  4. Activity各种情况下的生命周期
  5. 横竖屏切换的时候,Activity 各种情况下的生命周期
  6. Activity与Fragment之间生命周期比较
  7. Activity上有Dialog的时候按Home键时的生命周期
  8. 两个Activity 之间跳转时必然会执行的是哪几个方法?
  9. 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
  10. Activity的四种启动模式
  11. 对比Activity状态保存于恢复
  12. fragment各种情况下的生命周期
  13. Fragment状态保存onSaveInstanceState是哪个类的方法,在什么情况下使用?
  14. Fragment.startActivityForResult是和FragmentActivity的startActivityForResult?
  15. 如何实现Fragment的滑动?
  16. fragment之间传递数据的方式?
  17. service和activity怎么进行数据交互?
  18. 说说ContentProvider、ContentResolver、ContentObserver 之间的关系
  19. 请描述一下广播BroadcastReceiver的理解广播的分类广播使用的方式和场景本地广播和全局广
    播有什么差别?
  20. AlertDialog,popupWindow,Activity区别
  21. Application 和 Activity 的 Context 对象的区别
  22. Android属性动画特性
  23. 如何导入外部数据库
  24. LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。
  25. 谈谈对接口与回调的理解
  26. 回调的原理
  27. 写一个回调demo
  28. 介绍下SurfView
  29. RecycleView的使用
  30. 序列化的作用,以及Android两种序列化的区别
  31. 差值器
  32. 估值器
  33. 计算一个view的嵌套层级
  34. Activity栈
  35. Android线程有没有上限?
  36. Android线程有没有上限?
  37. 线程池有没有上限?
  38. ListView重用的是什么?
  39. Android为什么引入Parcelable?
  40. 有没有尝试简化Parcelable的使用?

多线程专题面试

1.什么是线程
线程就是进程中运行的多个子任务,是操作系统调用的最小单元

2.线程的状态
New:新建状态,new出来,还没有调用start
Runnable:可运行状态,调用start进入可运行状态,可能运行也可能没有运行,取决于操作系统的调度
Blocked:阻塞状态,被锁阻塞,暂时不活动,阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。
Waiting:等待状态,不活动,不运行任何代码,等待线程调度器调度,wait sleep
Timed Waiting:超时等待,在指定时间自行返回
Terminated:终止状态,包括正常终止和异常终止

3.线程的创建
a.继承Thread重写run方法
b.实现Runnable重写run方法
c.实现Callable重写call方法
实现Callable和实现Runnable类似,但是功能更强大,具体表现在
a.可以在任务结束后提供一个返回值,Runnable不行
b.call方法可以抛出异常,Runnable的run方法不行
c.可以通过运行Callable得到的Fulture对象监听目标线程调用call方法的结果,得到返回值,(fulture.get(),调用后会阻塞,直到获取到返回值)

4.volatile关键字
volatile为实例域的同步访问提供了免锁机制,如果声明一个域为volatile,那么编译器和虚拟机就直到该域可能被另一个线程并发更新

5.Thread为什么不能用stop方法停止线程
从SUN的官方文档可以得知,调用Thread.stop()方法是不安全的,这是因为当调用Thread.stop()方法时,会发生下面两件事:
1.即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。

2.释放该线程所持有的所有的锁。调用thread.stop()后导致了该线程所持有的所有锁的突然释放,那么被保护数据就有可能呈现不一致性,其他线程在使用这些被破坏的数据时,有可能导致一些很奇怪的应用程序错误。

读者福利

由于篇幅有限,部分题目以及答案就不做全部展示了,这些面试题的答案我已经整理成PDF文档了,同时也整理了一些问题详解;虽然说花了一点时间,但是我也愿意把它免费分享出来,希望能够帮助到有需要的Android开发工程师朋友,也省的大家再去网上花时间找资料。

平台限制,不能直接发链接,需要的朋友可以进一下传送门:

传送门

最后

希望看到朋友动动手指,帮忙转发一下,这样会帮助到更多的朋友

祝大家学习愉快!


上一篇下一篇

猜你喜欢

热点阅读