BAT大厂面试必问;Android 基础与底层机制突破

前言

金三银四过去一半了。但是还有很多人还没找到合适的工作。一方面是初中级Android岗比较饱和了没以前好找,一方面是很多人面试前没有做好准备,也不知道该准备什么。

今天就给大家把我压箱底的一些BAT等一线大厂面试资料献出来,先声明这些都是我在一个腾讯官方群里收集的,也整理了相应的答案方便大家有个参考,如果有侵犯泄露等问题请私我解决谢谢。

请看面试题;

  1. 数据库的操作类型有哪些,如何导入外部数据库?(腾讯)

读懂题目。如果碰到问题比较模糊的时候可以适当问问面试官。配合面试官来面试:面试是一个相互了解的过程,要充分利用面试的题目和时间把自己的能力和技术展现出来,面试官能够看到你的真实技术。

1) 使用数据库的方式有哪些?

  • openOrCreateDatabase(String path);
  • 继承SqliteOpenHelper类对数据库及其版本进行管理(onCreate,onUpgrade)

当在程序当中调用这个类的方法getWritableDatabase()或者getReadableDatabase();的时候才会打开数据库。如果当时没有数据库文件的时候,系统就会自动生成一个数据库。

2) 操作的类型:增删改查CRUD

  • 直接操作SQL语句:SQliteDatabase.execSQL(sql);
  • 面向对象的操作方式:SQLiteDatabase.insert(table, nullColumnHack, ContentValues);

如何导入外部数据库?

  • 一般外部数据库文件可能放在SD卡或者res/raw或者assets目录下面。
  • 写一个DBManager的类来管理,数据库文件搬家,先把数据库文件复制到”/data/data/包名/databases/”目录下面,然后通过db.openOrCreateDatabase(db文件),打开数据库使用。

我上一个项目就是这么做的,由于app上架之前就有一些初始数据需要内置,也会碰到数据的升级等问题,我是这么做的…… 同时我碰到最有意思的问题就是关于数据库并发操作的问题,比如:多线程操作数据库的时候,我采取的是封装使用互斥锁来解决……

  1. 是否使用过本地广播,和全局广播有什么差别?(抖音)

引入本地广播的机制是为了解决安全性的问题:

1) 正在发送的广播不会脱离应用程序,比用担心app的数据泄露;
2) 其他的程序无法发送到我的应用程序内部,不担心安全漏洞。(比如:如何做一个杀不死的服务---监听火的app 比如微信、友盟、极光的广播,来启动自己。)
3) 发送本地广播比发送全局的广播高效。(全局广播要维护的广播集合表 效率更低。全局广播,意味着可以跨进程,就需要底层的支持。)

本地广播不能用静态注册。----静态注册:可以做到程序停止后还能监听。

使用:

(1) 注册
LocalBroadcastManager.getInstance(this).registerReceiver(new XXXBroadCastReceiver(), new IntentFilter(action));
(2) 取消注册:
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)

3. 是否使用过 IntentService,作用是什么, AIDL 解决了什么问题? (小米)

4. Activity、 Window、 View 三者的差别, fragment 的特点?(360)

5. 描述一次网络请求的流程(新浪)

6. Handler、 Thread 和 HandlerThread 的差别(小米)

7. 低版本 SDK 实现高版本 api(小米)

8. launch mode 应用场景(百度、小米、乐视)

9. touch 事件传递流程(小米)

10. view 绘制流程(百度)

11. 什么情况导致内存泄漏(美团)

12. ANR 定位和修正

13. 什么情况导致 oom(乐视、美团)

14. Android Service 与 Activity 之间通信的几种方式

15. Android 各个版本 API 的区别

16.如何保证一个后台服务不被杀死,比较省电的方式是什么?(百度)

17. Requestlayout, onlayout, onDraw, DrawChild 区别与联系(猎豹)

18. invalidate()和 postInvalidate() 的区别及使用(百度)

19. Android 动画框架实现原理(腾讯)

20. Android 为每个应用程序分配的内存大小是多少?(美团)

看具体的手机平台,常见的有:64M/32M等

21. LinearLayout 对比 RelativeLayout(百度)

22. 优化自定义 view(百度、乐视、小米)

1)减少在onDraw里面大量计算和对象创建和大量内存分配。
2)应该尽量少用invalidate()次数。
3)view里面耗时的操作layout。减少requestLayout()避免让UI系统重新遍历整棵树。Mearsure。
4)如果你有一个很复杂的布局,不如将这个复杂的布局直接使用你自己的写的ViewGroup来实现。减少了一个树的层次关系 全部都是自己测量和layout,达到优化的目的。(Facebook就经常这么干)

24. ContentProvider(乐视)

提示:跨进程通信。进程之间进行数据交互共享。;源码来一剁。

25.fragment 生命周期

26. volley 解析(美团、乐视)

27. Android Glide 源码解析

28. Android 属性动画特性(乐视、小米)

。。。。。。

限于一篇文章的篇幅不方便把全部的面试题和答案全部展开。这是我保存的底层面试突破文档;

这些都是我在腾讯一个Android官方QQ群里收藏保存下来的面试题。包含了BAT各种大厂的高级源码面试题,也有java,数据结构这些基础的面试题。最近在找工作面试需要这些面试专题,和了解行业情况的朋友,建议可以加一下这个高级社群;830344345。里面有各种免费学习和面试资料分享,还能跟大佬一起交流。

猜你喜欢

转载自blog.csdn.net/feiyu1947/article/details/88859805