博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题①
阅读量:6166 次
发布时间:2019-06-21

本文共 4420 字,大约阅读时间需要 14 分钟。

1.listview的优化

convertView的使用,主要优化加载布局问题

listivew每次滚动都会调用getview()方法,所以优化getview是重中之重。

内部类ViewHolder的使用

主要优化getView方法中每次回调用findviewByID()方法来获取一次控件的代码

使用分段加载

使用分页加载

2.按返回键如何退出应用程序

先监听是否按了返回按钮

   

/**      * 监听Back键按下事件,方法1:      * 注意:      * super.onBackPressed()会自动调用finish()方法,关闭      * 当前Activity.      * 若要屏蔽Back键盘,注释该行代码即可      */    @Override       public void onBackPressed() {           super.onBackPressed();           System.out.println("按下了back键   onBackPressed()");              }        /**     * 监听Back键按下事件,方法2:     * 注意:     * 返回值表示:是否能完全处理该事件     * 在此处返回false,所以会继续传播该事件.     * 在具体项目中此处的返回值视情况而定.     */       @Override       public boolean onKeyDown(int keyCode, KeyEvent event) {           if ((keyCode == KeyEvent.KEYCODE_BACK)) {                System.out.println("按下了back键   onKeyDown()");                 return false;           }else {               return super.onKeyDown(keyCode, event);           }        }

 

在退出应用程序中所有的activity

1.使用链表把要退出的Activity实例保存起来,在要退出时,遍例这个链表,调用每个Activity的finish方法。 

2.可以使用广播,每个Activity中收到这个广播,自己把自己finish掉。

3.加密算法的区别

DES :加密后密文长度是8个整数倍,DES秘钥长度:8个字符 

AES:AES秘钥长度:16个字符, AES加密后密文长度是16的整数倍 
RSA:秘钥对: 
公钥和私钥,秘钥对不能手动指定,必须有系统生成 
加密速度慢:必须分段加密,不能加密大文件,RSA每次最大只能加密117个字节 
公钥加密私钥解密;私钥加密公钥解密 
公钥互换:连个商家合作需要交互公钥,但是私钥不能别人 
MD5:消息摘要;: 
16(加密后密文长度16个字节),32(密文转成16进制32个字节) 
不可逆 
加密后密文长度固定,1kb字符串和1G字符串加密结果长度一样 
Base64

4.native

5.域名

android 根据域名得到IP 

6.图片缓存

图片的三级缓存 

7.什么是Activity?

四大组件之一,通常一个用户交互界面对应一个activity。activity 是Context 的子类,同时实现了window.callback 

和keyevent.callback, 可以处理与窗体用户交互的事件。

8.请描述一下Activity 生命周期

Activity 从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括: 

onCreate onStart onResume onPause onStop onDestroy 
在Activity 被onStop 后,但是没有被onDestroy,在再次启动此Activity 时就调用onRestart(而 
不再调用onCreate)方法; 
如果被onDestroy 了,则是调用onCreate 方法。

9.Activity 的状态都有哪些?

a) foreground activity 

b) visible activity 
c) background activity 
d) empty process

10.如何保存Activity 的状态?

Activity 的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需要使用到这样的功能。

11.两个Activity 之间跳转时必然会执行的是哪几个方法?

一般情况下比如说有两个activity,分别叫A,B,当在A 里面激活B 组件的时候, A 会调用onPause()方法,然后B 调 

用onCreate() ,onStart(), onResume()。 
这个时候B 覆盖了窗体, A 会调用onStop()方法. 如果B 是个透明的,或者是对话框的样式, 就不会调用A 的 
onStop()方法。

12.横竖屏切换时Activity 的生命周期

此时的生命周期跟清单文件里的配置有关系。 

1、不设置Activity 的android:configChanges 时,切屏会重新调用各个生命周期 
默认首先销毁当前activity,然后重新加载。 
2.设置Activity 的android:configChanges=”orientation|keyboardHidden|screenSize”时,切屏不会重新调 
用各个生命周期,只会执行onConfigurationChanged 方法。 
通常在游戏开发, 屏幕的朝向都是写死的。

13.如何将一个Activity 设置成窗口的样式?

只需要给我们的Activity 配置如下属性即可。 

android:theme=”@android:style/Theme.Dialog”

14.请描述一下Activity 的启动模式都有哪些以及各自的特点

1.standard 

2.singleTop 
3.singleTask 
4.singleInstance

15.Service 是否在main thread 中执行, service 里面是否能执行耗时的操作?

默认情况,如果没有显示的指service 所运行的进程, Service 和activity 是运行在当前app 所在进程的main 

thread(UI 主线程)里面。 
service 里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)

16.Activity 怎么和Service 绑定,怎么在Activity 中启动自己对应的Service

Activity 通过bindService(Intent service, ServiceConnection conn, int flags)跟Service 进行绑定. 

在Activity 中可以通过startService 和bindService 方法启动Service。

17.请描述一下Service 的生命周期

Service 有绑定模式和非绑定模式,以及这两种模式的混合使用方式。不同的使用方法生命周期方法也不同。 

非绑定模式:当第一次调用startService 的时候执行的方法依次为onCreate()、onStartCommand(),(onStart()) 
当Service 关闭的时候调用onDestory 方法。

绑定模式:第一次bindService()的时候,执行的方法为onCreate()、onBind()解除绑定的时候会执行 

onUnbind()、onDestory()。

18.什么是IntentService?有何优点?

IntentService 是Service 的子类,比普通的Service 增加了额外的功能。 

会创建独立的worker 线程来处理所有的Intent 请求; 
会创建独立的worker 线程来处理onHandleIntent()方法实现的代码,无需处理多线程问题; 
所有请求处理完成后,IntentService 会自动停止,无需调用stopSelf()方法停止Service; 
为Service 的onBind()提供默认实现,返回null;

19说说ActivityIntentService 是什么关系

Activity 

负责用户界面的显示和交互,Service 负责后台任务的处理。Activity 和Service 之间可以通过Intent 传递数据,因此 
可以把Intent 看作是通信使者。

20Serializable Parcelable 的区别

1.在使用内存的时候,Parcelable 类比Serializable 性能高,所以推荐使用Parcelable 类。

2.Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的GC

3.Parcelable 不能使用在要将数据存储在磁盘上的情况。尽管Serializable 效率低点,但在这种情况下,还是建议你用Serializable

21Framework

服务端、客户端、linux驱动 

22.进程间通信

 

1、使用Bundle 
2、使用文件共享 
3、使用Messenger 
4、使用AIDL 
5、使用ContentProvider 
6、使用Socket

23进程和线程的区别

24Handler机制

25StringStringBufferStringBuilder区别

1.运行速度:StringBuilder > StringBuffer > String 

String最慢的原因: 
  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。 
2.线程安全:StringBuilder是线程不安全的,而StringBuffer是线程安全的

String:适用于少量的字符串操作的情况 

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

26.Listarraylist的区别

27MapHashMap,Hashtable,HashSet的区别

28

 

 
堆是一颗完全二叉树 

 

转载于:https://www.cnblogs.com/nangongyibin/p/10446919.html

你可能感兴趣的文章
ASP.NET 运行时详解 揭开请求过程神秘面纱
查看>>
Oracle 索引的失效检查
查看>>
C语言第五次作业--数据类型
查看>>
系统架构师-基础到企业应用架构-业务逻辑层
查看>>
高手详解SQL性能优化十条建议
查看>>
修改 IntelliJ IDEA 默认配置路径
查看>>
《现在的泪,都是当年脑子进的水》读书笔记
查看>>
IOSday04 UIButton使用
查看>>
铁大好青年内部分组
查看>>
unity3D ——自带寻路Navmesh入门教程(一)(转)
查看>>
判断字符串是否为数字的函数
查看>>
[emuch.net]MatrixComputations(7-12)
查看>>
linux 命令 — 文件相关
查看>>
自己空闲的时候封装一下
查看>>
Datagard產生gap
查看>>
本机web开发环境的搭建--nginx篇
查看>>
rcnn 理解笔记
查看>>
问答项目---登陆验证码点击切换及异步验证验证码
查看>>
plist文件中iphone和ipad的应用图片设置
查看>>
搜集的一些资源网站链接
查看>>