知乎上一个关于Android面试的问题答案
由于链接出错,这里附上原文链接:Touch Me
前段时间面试,自己以及小伙伴们简要的汇总的一些面试问题,可以对照的参考一下吧~
建议就是在面一家公司之前了解好这个公司的app是以什么为驱动的,例如电商的话肯定要了解hybrid 开发的一些知识点,图像处理的公司要好好复习下bitmap canvas相关的知识点,祝好运!
UI:
1.View的绘制
Android视图绘制流程完全解析,带你一步步深入了解View(二)
3)canvas
Activity:
1.onPause和onStop的区别 // 这里有错误需要修改,修改在下方
onPause:可以看到这个activity (比如dialog) onStop:看不见这个activity
2.Activit用的启动方式
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
3.ActivityManagerService
第6章 深入理解ActivityManagerService
4.activity的启动过程:
5.Activity之间的协作当一个activity A启动了另外一个activity B,它们的生命周期是有交叉的;
首先A的onPause()被调用;
e之后B的onCrate(), onStart()及onResume() 方法会被调用(此时B拥有用户焦点);
最后,如果A在屏幕上不可见,onStop()方法被调用;
因此,我们在两个activities中传递数据,或者共享资源时(如数据库连接),需要在前一个activity的onPause()方法而不是onStop()方法中进行;
Service
1)service解析
2)两种启动方式
Fragment
1)生命周期:
数据存储:
1)contentprovider
2)sqlite
内存泄露:
1,不要让生命周期长于Activity的对象持有到Activity的引用
2,尽量使用Application的Context而不是Activity的Context
3,尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用(具体可以查看细话Java:”失效”的private修饰符了解)。如果使用静态内部类,将外部实例引用作为弱引用持有。
4,垃圾回收不能解决内存泄露,了解Android中垃圾回收机制
网络
1)volley
Android Volley完全解析(四),带你从源码的角度理解Volley
2)如何控制TCP连接时的拥塞
3)三次握手
4)Android客户端和服务端如何使用Token和Session
Android客户端和服务端如何使用Token和Session
5) 移动端获取网络数据优化的几个点
0. 连接复用 :
节省连接建立时间,如开启 keep-alive。
对于 Android 来说默认情况下 HttpURLConnection 和 HttpClient 都开启了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影响连接池的 Bug,具体可见:Android HttpURLConnection 及 HttpClient 选择
请求合并:
即将多个请求合并为一个进行请求,比较常见的就是网页中的 CSS Image Sprites。如果某个页面内请求过多,也可以考虑做一定的请求合并。
2. 减少请求数据的大小:
对于post请求,body可以做gzip压缩的,header也可以作数据压缩(不过只支持http 2.0)。
3. 返回的数据的body也可以作gzip压缩,body数据体积可以缩小到原来的30%左右。(也可以考虑压缩返回的json数据的key数据的体积,尤其是针对返回数据格式变化不大的情况,支付宝聊天返回的数据用到了)
4. 根据用户的当前的网络质量来判断下载什么质量的图片(电商用的比较多)
图像处理:
1.裁剪
2.Fresco:
android缓存
1.LRUCache
GC:
1.GC过程:
内存:
1)内存分配:
多线程
1)线程池:
事件分发机制
1)Touch
算法:
1.TopK堆解决
优化
1)Listview的优化
2)convertView是如何传递到adapter的getView方法的
Hybrid
1)java和JS的交互
Android中JavaScript和Native之间的Bridge
WebView开启JavaScript脚本执行
WebView设置供JavaScript调用的交互接口。
- 客户端和网页端编写调用对方的代码。
-----------------------------------------------------------------------------------------------
感谢@ Jaeger 的修正,之前一直以为一个dialog弹出会触发当前的activity的onPause函数,其实并没有,onPause()触发的条件为当前的actiivty即将要退出activityStack的top,然而dialog并不是一个activity所以无法让activity退出的。写了个demo的确是没有弹出来onPause里面的toast,详细解释stackoverflow也有一个比较好的答案,上链接大家更正一下,不要影响到面试最重要!
Android: Under what circumstances would a Dialog appearing cause onPause() to be called?
作者:张虾昂
链接:https://www.zhihu.com/question/36654270/answer/70041187
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
知乎上一个关于Android面试的问题答案的更多相关文章
- Android面试题目及其答案
转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...
- 知乎上一个比较好的学习QT的公众号<<跟小豆君学Qt>>
公众号网址:https://zhuanlan.zhihu.com/p/28472916
- 年底Android面试整理(附答案)
面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二.以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期, ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
- Android开发:向下一个activity传递数据,返回数据给上一个activity
1.向下一个activity传递数据 activity1 Button button=(Button) findViewById(R.id.button1); button.setOnClickLis ...
- android webview点击返回键回到上一个html
android webview点击返回键返回上一个html @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( ...
- Android学习之可滑动当前的Activity视图看见上一个活动的视图
先看一下我的效果图吧: 好大的图啊!!! 百度音乐由一个很酷的功能,当前的UI可以滑动,然后看见上一个活动的UI,当时顿时觉得百度的牛人好多啊,能将如此前沿的技术应用到app上.当然如果你熟悉了And ...
- 【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动
1.0 可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目. 新建活动FirstActivity,勾选“Generate Layout File”和“Launche ...
- Android - 返回上一个界面finish()方法
返回上一个界面finish()方法 本文地址: http://blog.csdn.net/caroline_wendy Android能够使用finish()方法,实现函数返回的功能.当不是Activ ...
随机推荐
- M语言中的引用(Power Query 之 M 语言)
名词 查询表 函数 行{}/列[] 单元格 表(Table) 列表(List) 记录(Record) 引用[查询表] =查询表表名 引用[应用的步骤] =步骤名 引用表中的[单元格](深化) =表{行 ...
- LuoguP7911 [CSP-J 2021] 网络连接 题解
Content 题目过于难解释,请前往题面查看.以下直接给出本题做法. Solution 入门组 T3 在我印象中向来都不是很容易能做出来的题目,但是今年这个 T3 不得不说还是挺好做的. 我们先不妨 ...
- CF1106A Lunar New Year and Cross Counting 题解
Content 试求出在一个 \(n\times n\) 的地图 \(M\) 中,满足 \(1\leqslant i,j\leqslant n\) 且 \(M_{i,j}=M_{i+1,j+1}=M_ ...
- CF173A Rock-Paper-Scissors 题解
Content 有 \(2\) 个人在玩石头剪刀布,已知他们的出手都有一定的规律,求 \(n\) 局之后两个人各输了几局. 数据范围:\(1\leqslant n\leqslant 2\times 1 ...
- Tornado WEB服务器框架 Epoll
引言: 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会 ...
- JAVA比较指定的两个日期
判断指定日期是否在某个日期内 public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); p ...
- 【LeetCode】38. 外观数列 Count and Say
作者: 负雪明烛 id: fuxuemingzhu 公众号:负雪明烛 本文关键词:LeetCode,力扣,算法,算法题,外观数列,Count and Say,刷题群 目录 题目描述 题目大意 解题方法 ...
- 【LeetCode】14. Longest Common Prefix 最长公共前缀
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:prefix, 公共前缀,题解,leetcode, 力扣 ...
- leetcode 761. Special Binary String
761. Special Binary String 题意: 一个符合以下两个要求的二进制串: \(1.串中包含的1和0的个数是相等的.\) \(2.二进制串的所有前缀中1的个数不少于0的个数\) 被 ...
- 【LeetCode】22. Generate Parentheses 括号生成
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:括号, 括号生成,题解,leetcode, 力扣,Pyt ...