美文网首页
Android 3.29面试题

Android 3.29面试题

作者: 我要离开浪浪山 | 来源:发表于2021-11-20 20:29 被阅读0次

1. 实体类中使用set/get与直接调用变量相比有什么区别,有哪些好处?

  • a.set/get比较灵活
  • b.set/get安全性(只读或只写的权限)
  • c.get方法是给私有成员变量取值的,set方法是赋值的,而成员变量的值只能在本类中被使用

2. 线程的sleep()和wait()有什么区别,举两个简单的使用场景。

它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.

还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;

wait()可以用notify()直接唤起. sleep和wait的区别还有:
1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用, 而sleep可以在 任何地方使用

synchronized(x){        
x.notify()       
//或者wait()    
} 

4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

3. 字节流和字符流使用场景的区别。

InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象, Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串. 字符流处理的单元为2个字节的Unicode字符,操作字符、字符数组或字符串, 字节流处理单元为1个字节,操作字节和字节数组。 所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的, 所以它对多国语言支持性比较好! 如果是音频文件、图片、歌曲,就用字节流好点, 如果是关系到中文(文本)的,用字符流好点

1.字节流在操作时不会用到缓冲区(内存),是直接对文件本身进行操作的。而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
2.在硬盘上的所有文件都是以字节形式存在的(图片,声音,视频),而字符值在内存中才会形成。

4. ConcurrentHash如何做到高效且线程安全的?

  • ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。
  • 从ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable,根据key.hashCode()来决定把key放到哪个HashTable中。

5. 列出造成内存泄露的原因,并给我解决方案

内存溢出的原因以及解决方法

引起内存溢出的原因有很多种,小编列举一下常见的有以下几种:

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG; 5.启动参数内存值设定的过小

内存溢出的解决方案:

第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。

第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

6. 请尽可能详细描述自定义view的步骤

  • 1、创建View,继承现有View
  • 2、定义自定义属性,获取自定义属性并使用
  • 3、测量View
  • 4、绘制View
  • 5、使用已定义的View

7. 界面在栈下部被系统回收后,返回此界面的时候如何恢复数据?

重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法中提取保存好的数据。

8. 开发过程中如何快速的定位造成UI卡顿的原因?

下面总结一些常见的UI卡顿原因:

一、外部因素引起的(以View为区分)

  1. 内存抖动的问题

  2. 方法太耗时了(CPU占用)

二、View本身的卡顿

Android使用消息机制进行UI更新的,如果在主线程handler的dispatchMessage方法进行了耗时操作,就会发生UI卡顿。

9. 了解哪些热更新框架?大致描述一种或多种安卓热更新的实现方式。

10.Android 线程间通信有哪几种方式**

1)共享变量(内存)
2)管道
3)handle机制

  • runOnUiThread(Runnable)
  • view.post(Runnable)

11.Devik 进程,linux 进程,线程的区别**

Dalvik进程。

每一个android app都会独立占用一个dvm虚拟机,运行在linux系统中。

所以dalvik进程和linux进程是可以理解为一个概念。

12.描述一下 android 的系统架构**

从小到上就是:

linux kernel,lib dalvik vm ,application framework, app

13.android 应用对内存是如何限制的?我们应该如何合理使用内存?**

activitymanager.getMemoryClass() 获取内存限制。

关于合理使用内存,其实就是避免OOM & 内存泄露中已经说明。

14. 简述 android 应用程序结构是哪些**

1)main code
2)unit test
3)mianifest
4)res->drawable,drawable-xxhdpi,layout,value,mipmap
mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术.
google建议只把启动图片放入
5)lib
6)color

15.请解释下 Android 程序运行时权限与文件系统权限的区别

  • 文件的系统权限是由linux系统规定的,只读,读写等。
  • 运行时权限,是对于某个系统上的app的访问权限,允许,拒绝,询问。该功能可以防止非法的程序访问敏感的信息。

16.Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么

Framework是android 系统对 linux kernel,lib库等封装,提供WMS,AMS,bind机制,handler-message机制等方式,供app使用。

简单来说framework就是提供app生存的环境。

1)Activity在attch方法的时候,会创建一个phonewindow(window的子类)
2)onCreate中的setContentView方法,会创建DecorView
3)DecorView 的addview方法,会把layout中的布局加载进来。

17.多线程间通信和多进程之间通信有什么不同,分别怎么实现**

线程间的通信可以参考第6点。

进程间的通信:bind机制(IPC->AIDL),linux级共享内存,boradcast,

Activity 之间,activity & serview之间的通信,无论他们是否在一个进程内。

18.Android 屏幕适配**

屏幕适配的方式:xxxdpi, wrap_content,match_parent. 获取屏幕大小,做处理。

dp来适配屏幕,sp来确定字体大小

drawable-xxdpi, values-1280*1920等 这些就是资源的适配。

wrap_content,match_parent, 这些是view的自适应

weight,这是权重的适配。

19.什么是 AIDL 以及如何使用**

Android Interface Definition Language

AIDL是使用bind机制来工作。

参数:

java原生参数

String

parcelable

list & map 元素 需要支持AIDL

20.如何修改 Activity 进入和退出动画**

overridePendingTransition

21.SurfaceView & View 的区别

view的更新必须在UI thread中进行

surfaceview会单独有一个线程做ui的更新。

surfaceview 支持open GL绘制。

22、 什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?

答:程序出现异常,比如nullpointer。
避免:编写程序时逻辑连贯,思维缜密。能捕获异常,在logcat中能看到异常信息

相关文章

  • Android 3.29面试题

    1. 实体类中使用set/get与直接调用变量相比有什么区别,有哪些好处? a.set/get比较灵活 b.set...

  • Android面试题

    Android面试必备: (一)、Java面试题 (二)、Android面试题 (三)、Android高级面试题

  • 面试题

    关注的面试题文集 Android面试题整理 Android工程师面试题大全 Android 面试题总结之Andro...

  • Android面试总结二

    参考文章 40个Android面试题Java面试题集Android名企面试题及知识点整理Android面试题收集较...

  • Android 面试题(重点2)

    掘金官网Android面试题 Android 动画 Android 动画Android面试题 算法和数据结构 设计...

  • Android主流框架面试准备

    MVP Android MVP架构搭建史上最全的Android MVP模式架构面试题集锦Android面试题-架构...

  • Android面试题汇总

    面试题汇总 Android复习资料——Android知识点汇总(一) 史上最全的Android面试题集锦 ForA...

  • Android 面试题汇总

    一、Android面试题 Android面试题包括Android基础,还有一些源码级别的、原理这些等。所以想去大公...

  • Android面试

    [toc] Android面试题 Android面试题除了Android基础之外,更多的问的是一些源码级别的、原理...

  • Android面试题

    二、Android面试题 Android面试题包括Android基础,还有一些源码级别的、原理这些等。所以想去大公...

网友评论

      本文标题:Android 3.29面试题

      本文链接:https://www.haomeiwen.com/subject/skvltrtx.html