Android工程师面试题

时间:2024-09-19 09:30:41 学人智库 我要投稿
  • 相关推荐

关于Android工程师面试题

  singletask:栈内复用模式。不是在当前任务栈中查找是否存在,实际过程如下:

关于Android工程师面试题

  查找该Activity所需的任务栈是否存在(由taskAffinity控制,或者默认为包名)。

  在任务栈当中查找该Activity是否存在。

  这里面存在任务栈的切换,也就是当开启的singtask类型的Activity不属于当前任务栈时,则会切换到其任务栈。

  singleInstance:单实例模式。

  包含了singleTask的所有特性,另外加上:设置为该模式的Activity,只能单独存在于一个任务栈中。当有两个singleInstace的Activity设置成同样的任务栈时,会出现两个同名的任务栈,分别用来存放同名的Activity。

  注:在任何跳转的时候,首先调用本Activity的onPause,然后跳转。如果被跳转的activity由于启动方式而没创建新的实例,则会先调用onNewIntent,然后按照正常的生命周期调用。

  如

  1:A→B,A:onPause;B:onCreate,onStart,onResume。

  2:A(singleTop)→A,A:onPause;A:onSaveInstanceState;A:onResume。

  3、View的绘制

  推荐郭霖大神的博客:

  https://blog.csdn.net/guolin_blog/article/details/16330267

  4、canvas的使用

  推荐以下博客:

  https://blog.csdn.net/qinjuning/article/details/6936783

  5、ActivityManagerService的相关知识点

  推荐以下博客:

  https://wiki.jikexueyuan.com/project/deep-android-v2/activity.html

  6、Activity切换时生命周期交集

  Activity之间的协作当一个activity A启动了另外一个activity B,它们的生命周期是有交叉的;

  首先A的onPause()被调用;

  之后B的onCrate(), onStart()及onResume() 方法会被调用(此时B拥有用户焦点);

  最后,如果A在屏幕上不可见,onStop()方法被调用;

  因此,我们在两个activities中传递数据,或者共享资源时(如数据库连接),需要在前一个activity的onPause()方法而不是onStop()方法中进行;

  7、Hybrid(重要加分项)

  java和JS的交互

  https://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/

  https://rensanning.iteye.com/blog/2043049

  WebView开启JavaScript脚本执行

  WebView设置供JavaScript调用的交互接口。

  8、网络编程

  volley

  https://bxbxbai.github.io/2014/09/14/android-working-with-volley/

  https://blog.csdn.net/guolin_blog/article/details/17656437

  如何控制TCP连接时的拥塞

  https://blog.csdn.net/yechaodechuntian/article/details/25429143

  三次握手

  https://blog.csdn.net/whuslei/article/details/6667471

  Android客户端和服务端如何使用Token和Session

  https://wyong.blog.51cto.com/1115465/1553352

  移动端获取网络数据优化的几个点连接复用 :

  节省连接建立时间,如开启 keep-alive。

  对于 Android 来说默认情况下 HttpURLConnection 和 HttpClient 都开启了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影响连接池的 Bug,具体可见:Android HttpURLConnection 及 HttpClient 选择

  请求合并:

  即将多个请求合并为一个进行请求,比较常见的就是网页中的 CSS Image Sprites。如果某个页面内请求过多,也可以考虑做一定的请求合并。

  减少请求数据的大小:

  对于post请求,body可以做gzip压缩的,header也可以作数据压缩(不过只支持http 2.0)。

  返回的数据的body也可以作gzip压缩,body数据体积可以缩小到原来的30%左右。(也可以考虑压缩返回的json数据的key数据的体积,尤其是针对返回数据格式变化不大的情况,支付宝聊天返回的数据用到了)

  根据用户的当前的网络质量来判断下载什么质量的图片(电商用的比较多)。

  9、android开发中,可能会导致内存泄露的问题

  不要让生命周期长于Activity的对象持有到Activity的引用

  尽量使用Application的Context而不是Activity的Context

  尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用(具体可以查看细话Java:”失效”的private修饰符了解)。如果使用静态内部类,将外部实例引用作为弱引用持有。

  垃圾回收不能解决内存泄露,了解Android中垃圾回收机制

  **更多内容可以参考以下博客:

  https://spencer-dev.lofter.com/post/d7b9e_6faf120

  10、activity的启动过程:

  https://www.cloudchou.com/android/post-788.html

  以上是我遇到和搜集到的各类题目以及相应的解答,接下来一段时间也会持续更新,大家遇到什么经典或者不会的问题也可以给我留言,在此统一分享给大家。祝大家能够找到自己心仪的工作,前途一片光明!

【Android工程师面试题】相关文章:

投行面试题07-24

软件测试面试题01-17

中层副职竞聘面试题09-05

来看看谷歌的面试题08-17

济南稼轩中学小升初面试题07-21

压力危机类面试题目突破技巧11-09

今年最强的面试题和最牛的答卷09-20

考察个人价值观的另类面试题02-21

人力资源行业常见面试题汇总02-03

面试题:给我们一个录取你的理由?11-16