美团和大众点评笔试题
1 N个数选最大的M个,其复杂度为:
nLogM
2 Activity A 启动了B。 ( B的启动模式是SingleInstance. )
实际上在源码中,正常的startActivity也会走到startAFR中,
A以startActivityForResult()的形式启动B。
那么A的onAtivityResult()方法什么时候被回调?
1 startActivityForResult() 多用来一次性启动B,当B调用了finish()方法之后,界面将自动回到A,并且调用A的onActivityResult()方法。
2 startActivityForResult(intent,requestCode) requestCode为一个int值,用来标识一个凭依。
3 A中重写onActivityResult(reqestCode,resultCode,intent) 用于处理从B返回的数据,
4 B中回传数据要使用setResult(resultCode,intent) 并在之后调用finish()方法。
如果B的启动模式是SingleTask的。可能出现在任务栈内,B位于A下边,那么就会删除B之上的,包含A,则A的 onActivityResult就会立刻被回调,缺result_Code=RESULT_CANCEL
如果B的启动模式是singleInstance,那么B的任务栈与A不是同一个任务栈。那么A的onActivityResult方法就不会被回调。
3 修饰符从大到小范围
Public protect default private
4 哪些类实现或继承了Collection接口?
Collection 是set list queue 的父类接口。 Map接口是独立的。
Iterator接口又是另外一个概念,或者说它更偏向与一种模式。
Iterator接口的实现,必须借助于Collection实现类 来 实现。
Iterator将Collection实现类的数据形式,以及访问其内部数据的方式解耦。
假设没有Iterator,访问数组则遍历,访问链表则while循环。
Collection.iterator()方法将返回一个Iterator实例。
5 四大组件的回调方法运行在哪儿?
四大组件默认都运行在UI线程,
所以其生命周期,各种回调方法,也在UI线程中。
但是,IntentService,HandlerThread,AsyncTask 等,启动了子线程的,他们的回调方法就不一定在UI线程中了。