源码分析相关面试题

Activity相关面试题

与XMPP相关面试题

与性能优化相关面试题

与登录相关面试题

与开发相关面试题

与人事相关面试题

与人事相关面试题现在三四月份,金三银四最好找工作时间,为方便各位找工作,特意收集100道android各个方面的面试题,并且会一一录制视频分享给大家方便大家找工作,面试题分类如下;

本文配套视频欢迎关注微信公众号,长期推荐技术文章和技术视频

1- Davik进程、linux进程、线程之间的区别?

Linux进程:Linux进程,它有独立的内核堆栈和独立的存储空间,它是操作系统中资源分配和调度的最小单位。

Linux操作系统会以进程为单位,分配系统资源,给程序进行调度。

Linux操作系统在执行一个程序时,它会创建一个进程,来执行应用程序,并且伴随着资源的分配和释放。

Davik进程:Dalvik虚拟机运行在Linux操作系统之上。

Davik进程就是Linux操作系统中的一个进程,属于linux进程

每个Android应用程序进程都有一个Dalvik虚拟机实例。这样做得好处是Android应用程序进程之间不会互相影响,也就是说,一个Android应用程序进程的意外终止,不会影响到其他的应用程序进程的正常运行。

线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

线程自己基本上不拥有系统资源,在运行时,只需要必不可少的资源(如程序计数器,一组寄存器和栈)。

线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

三者之间的联系:Davik进程就是Linux操作系统的一个进程。

线程就是进程的一个实体,线程是进程的一部分。一个进程中可以提供多个线程执行控制。

进程和线程的区别:一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程,使得多线程程序的并发性高。

进程在执行过程中拥有独立的内存单元,而多个线程共享内存(同属一个进程),从而极大地提高了程序的运行效率。

每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

2-Android 中进程与进程之间如何通信?aidl机制进程间通信

AIDL: (Android Interface definition language的缩写)它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口

AIDL进程间通讯的原理:

通过编写aidl文件来定义进程间通信接口。

编译后会自动生成响应的java文件

服务器将接口的具体实现写在Stub中,用iBinder对象传递给客户端,

客户端bindService的时候,用asInterface的形式将iBinder还原成接口,再调用其接口中的方法来实现通信。

使用Messenger实现进程间通信Messenger是基于AIDL实现的。

AIDL使服务器可以并行处理,而Messenger封装了AIDL之后只能串行运行,所以Messenger一般用作消息传递。需要大家注意:

区别Messenger和Message。Message是消息,承载了要传递的数据。

Messenger是信使,可以发送消息。并且Messenger对象可以通过getBinder方法获取一个Ibinder对象。

Messenger实现原理:服务端(被动方)提供一个Service来处理客户端(主动方)连接,维护一个Handler来创建Messenger,在onBind时返回Messenger的binder。

双方用Messenger来发送数据,用Handler来处理数据。Messenger处理数据依靠Handler,所以是串行的,也就是说,Handler接到多个message时,就要排队依次处理。

使用Messenger实现进程间通信方法如下:首先A应用提供一个Service,创建一个Messenger对象,在onBinder方法里返回messenger.getBinder()生成的IBinder对象;

然后在B应用绑定该Service,在ServiceConnection的onServiceConnected方法获取到IBinder对象;

最后在B应用使用获取到的binder对象构造出一个新的Messenger对象,使用该Messenger对象的send方法发送的Message数据,都将被Service里的Messenger对象handlerMessage方法接收到。

内容提供者ContentProvider实现进程间通信

系统四大组件之一,底层也是Binder实现,主要用来为其他APP提供数据。自定义的ContentProvider为外界进程访问的时候,

需要在注册时要提供authorities属性,应用需要访问的时候将属性包装成Uri.parse(“content://authorities”)。然后实现:

ContentProvider的中query,delete,insert等相关方法,进行数据的操作。

欢迎关注微信公众号,长期推荐技术文章和技术视频

微信公众号名称:Android干货程序员

Android性能优化面试题,与性能优化相关面试题 - 与IPC机制相关面试题 - 《Android面试宝典》 - 书栈网 · BookStack...相关推荐

  1. Wcdb android 目录,介绍 - 《WCDB - 腾讯开源的移动数据库框架》 - 书栈网 · BookStack...

    WCDB 相关讨论可以加我们的QQ群WCDB 技术交流群: 190485752 WCDB iOS/macOS 群: 708134978 WCDB Android 群: 868268492 WCDB W ...

  2. linux 分析磁盘性能,03.分析性能瓶颈 - 3.4.磁盘瓶颈 - 《Linux性能调优指南》 - 书栈网 · BookStack...

    磁盘瓶颈磁盘瓶颈性能调优选项 磁盘子系统通常是服务器性能的最重要方面,是瓶颈问题的高发部件.但是,磁盘问题表现的有时候并不是那么直接,比如说可能是内存不足.如果CPU周期浪费在等待I/O任务完成,应用 ...

  3. linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...

    压测工具其它有用工具 在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能.好的压测工具有很多,可能的功能如下: 发起压力 监控性能 监控系统使用率 生成报告 基准测试无非就 ...

  4. android引用ui,简介 - 如何引用 - 《XUI - Android 原生 UI 框架》 - 书栈网 · BookStack...

    在决定使用XUI前,你必须明确的一点是,此框架给出的是一整套UI的整体解决方案,如果你只是想使用其中的几个控件,那大可不必引入如此庞大的一个UI库,Github上会有更好的组件库.如果你是想拥有一套可 ...

  5. android mux协议,协议细节 - Mux.Cool - 《Project V(V2RAY)文档手册》 - 书栈网 · BookStack...

    Mux.Cool 协议 Mux.Cool 协议是一个多路复用传输协议,用于在一条已建立的数据流中传输多个各自独立的数据流. 版本 当前版本是 1 Beta. 依赖 底层协议 Mux.Cool 必须运行 ...

  6. android的IPC机制

    IPC不是android中独有的,任何一个操作系统都需要相应的IPC机制,比如Window上可以通过剪贴板,管道和邮槽来进行进程间通信:Linux上可以通过命名管道.共享内存.信号量等进行进程间通信, ...

  7. Android性能调优:App启动速度优化

    一.App启动分类 1.冷启动 Cold start 在启动应用前,系统还没有App的任何进程.比如设备开机后应用的第一次启动,系统杀掉应用进程 (如:系统内存吃紧引发的 kill 和 用户主动产生的 ...

  8. 【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )

    文章目录 一. 界面启动时间 二. 启动优化项目 三. 方法追踪 一. 界面启动时间 在 [Android 性能优化]应用启动优化 ( 启动白屏问题 | 应用启动时间测量 | 冷启动 | 热启动 | ...

  9. Android 性能优化---(7)布局优化

    Android性能优化:布局优化 详细解析 前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的布局优化,希望你们会喜欢. 目录 1. 影响的性能 布局性能的好坏 主要影响 ...

最新文章

  1. Taylayout 底部的滑动线高度设置
  2. 洛谷P1006 传纸条 (棋盘dp)
  3. ETH网络要爆炸,未来Token的最佳选择注定是BCH
  4. werkzeug源码阅读笔记(二) 下
  5. 错误传播 --try{}catch(e){console.log(e)}
  6. 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!...
  7. 任意文件上传mysql_BigDump 跨站脚本、SQL注入、任意文件上传漏洞
  8. Java 设计模式之迭代器模式
  9. python发送邮件outlook_通过Python发送Outlook电子邮件?
  10. 怎样为深度学习系统选择GPU
  11. SWJTU 2208 最大覆盖
  12. [Usaco2009 Feb]Revamping Trails 堆优化 Dijkstra
  13. Android Studio创建安卓虚拟机并测试app
  14. Linux 各种网卡信息查询方法
  15. 美金融犯罪执法局文件遭泄露:汇丰、摩根大通、渣打等国际大行涉嫌非法转移资金...
  16. Spring之声明式事务控制(九)
  17. 【houdini 基础】Ramp 参数
  18. 走着走着,就剩下了沉默
  19. 双语电子书epub格式
  20. 北京大学可视化发展前沿研究生暑期学校Day4

热门文章

  1. 二进制包 mysql_二进制包;mysql
  2. node中怎样将css导入到html,CSS无法使用Node.js加载到我的HTML代码中
  3. python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...
  4. 安卓 python termux_Android Termux 安装 Linux 就是这么简单
  5. ngx对accept加锁操作
  6. Linux下使用popen()执行shell命令
  7. 用python查询数据库_用python 做数据库查询
  8. 线程的生命周期_[线程设计]通过观察者模式监控线程生命周期
  9. mac地址修改_优酷路由宝救砖时MAC和无线参数及SN恢复方法
  10. 建行优盾制单重要还是复核重要_注会成绩复核可行吗?纠结要不要申请!