程序员的知识教程库

网站首页 > 教程分享 正文

2016秋招——网易、阿里部分面试题答案

henian88 2025-05-05 15:53:25 教程分享 2 ℃ 0 评论

当你看到这篇文章时,如果还没有看过我之前发布的2016网易秋招,技术岗内推电面内容最新出炉以及2016阿里秋招提前批技术岗电面内容最新出炉,可以先去了解一下大致内容。由于很多的题目,在之前的文章中已经有所涉及,所以我这里只对还没有讲过并且稍有难度的内容进行梳理,如果你对其他题目的答案有需求,可以移步到本头条号的其它文章。

1. onSaveInstanceState (Bundle outState)的注意事项

1.1 该方法何时被调用?

答:当Activity很可能会被系统销毁,但用户实际上并没有明确销毁该Activity的意向时,onSaveInstanceState( )方法会被调用。这些情况包括:Activity跳转;旋转屏幕;按下HOME键并去运行其它的程序;关闭屏幕。

1.2 是否需要在该方法中手动保存UI组件的状态?

答:Android中的每个View都默认实现了onSaveInstanceState()方法也就是说他们的状态会自动存储并在需要时自动恢复。但是这只有在你为这个View提供了唯一的ID之后才起作用,如果没有提供ID,将不会存储它的状态。

1.3 可否在该方法中更新数据库?

答:不可以。因为该方法的执行具有不确定性,如果在此处进行数据更新操作,很可能因为该方法未被执行而丢失数据。

1.4 该方法的执行时间点?

答:确定发生在onStop()方法之前,但与onPause()方法的前后关系不确定

2.onRestoreInstance(Bundle outState)的注意事项

2.1 该方法何时被调用?

答:当用户在离开某个Activity后,又回到该Activity并且该Activity在用户离开后已经被系统销毁了,此时onRestoreInstance()方法会被调用。

2.2 该方法与onSaveInstanceState方法是否总是成对出现的?

答:不一定。

2.3 数据还原的工作是否只能在该方法中实现?

答:一般情况下我们都可以在onRestoreInstanceState()方法中做数据还原工作。但我们也可以在onCreate()方法中做数据还原的工作,因为onRestoreInstanceState()中的Bundle对象会传递到onCreate()方法中。

2.4 该方法的执行时间点?

答:发生在onStart()方法后。

3.AsyncTask的注意事项

3.1 AysncTask的核心方法中,哪些在线程池执行,哪些在主线程执行?

答:doInBackground方法在线程池执行;onPreExecute,onProgressUpdated和onPostExecute方法在主线程中执行。

3.2 AysncTask是串行还是并行执行的?

答:在2.3之后的版本,可以支持串行和并行,当想要串行执行时,直接执行execute()方法,如果需要并行执行,则要执行executeOnExecutor()方法。

3.3 AsyncTask是如何与主线程通信的?

AsyncTask中包含了一个静态的InternalHandler,它肩负着将执行环境从子线程切换到主线程的任务,这就意味着这个handler对象必须在主线程中创建,即要求我们必须在主线程中创建AsyncTask。

3.4 AsyncTask中实际上有两个线程池,其中线程池SerialExecutor用于任务排队,线程池Thread_Pool_Executor用于执行任务。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表