BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #32624同步于 2016/11/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

今天下午易到用车安卓开发面试总结

nijian81
2016/11/3镜像同步5 回复
1.一个xml文件中,包含一个viewgroup,viewgroup里面有个textview,如果我点击textview如何做到让textview不响应这个点击事件,让viewgroup去处理,考察的地方是ondispatch,onintercept,ontouch事件的调用流程,分发机制,也问到了onintercept和onintercept的调用顺序。 2.如何通过静态内部类的方式,实现单例模式,我写的是通过懒汉式的方式实现的,静态内部类不会,后来面试官问,如何保证线程安全,涉及到给方法加锁和部分代码加锁。 3.子类和父类中,静态代码块和非静态代码块,构造方法的调用顺序。 4.线程间同步的方式包括哪些? 5.一个activityA和启动activityB,他们的生命周期的调用顺序是什么?有一点需要注意下,oncreat,onstart,onresume,onpause,onstop,然后启动activityB,注意onpause是必须调用的,当初我以为调用onstop以后,就不调用onPause,这点需要注意。 6.onsavedInstance的用法,它是防止应用意外终止的,我按下home键会调用这个方法吗?如果按下back键会调用吗? 7.如何实现两个线程通过handler相互发消息和处理消息,就是两个线程分别调用对方的handler给对方的messegeQueue发消息,如果是工作线程的话,需要自己去初始化looper和messagequeue,如果是主线程如何实现这些组件的初始化的,我当时说的是主线程内部已经包含looper了。 8.关于service,它是运行在主线程还是工作线程,假如我需要在service中做一些耗时操作呢?我应该如何保证不引起anr?当内存不足,如何保证service不被杀死呢? 9.IntentService用过吗?这个不太了解,我给面试官说了说PendingIntent。 10.我看你简历里面做了个速可专车的项目,关于订单这块是如何处理的?这块我用的是leancloud服务器做的,推送这块怎么做的?应该是搜索附近的司机,找最近的推送?如何计算价格的?当时我说的是,调用的百度地图的api,计算两点之间公交车行驶的距离,然后通过距离计算价格。这时候没有考虑时间的因素。面试官问,如果我没有按照预定的路线行驶呢?这样有两种解决方式,一种是通过服务器去计算实际距离,一种是通过在客户端不断地算两点距离的累加,这样也可以,通过service去后台计算,当然对手机的内存会有点影响,不过影响不大。 11.介绍下多态的实现方式。 12.wait和sleep有什么区别? 13.用过哪些开源框架吗?介绍下。 14.假如我用handler post一个runnable,这个runnable运行在主线程还是工作线程,里面可以做一些耗时操作吗?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
icyfox机器人#1 · 2016/11/3
你都面了这么多次了,单例还用懒汉写,有点不太好 至少也是双重检查锁来做
nijian81机器人#2 · 2016/11/3
【 在 icyfox 的大作中提到: 】 : 你都面了这么多次了,单例还用懒汉写,有点不太好 : 至少也是双重检查锁来做 嗯啊,这点没注意看....
a206206机器人#3 · 2016/11/3
touch那块真是看完就忘
lixing机器人#4 · 2016/11/4
主线程也需要初始化Looper,只不过在启动MainActivity之前,已经由ActivityThread帮你完成了。 public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain"); SamplingProfilerIntegration.start(); // CloseGuard defaults to true and can be quite spammy. We // disable it here, but selectively enable it later (via // StrictMode) on debug builds, but using DropBox, not logs. CloseGuard.setEnabled(false); Environment.initForCurrentUser(); // Set the reporter for event logging in libcore EventLogger.setReporter(new EventLoggingReporter()); AndroidKeyStoreProvider.install(); // Make sure TrustedCertificateStore looks in the right place for CA certificates final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId()); TrustedCertificateStore.setDefaultUserDirectory(configDir); Process.setArgV0("<pre-initialized>"); Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); thread.attach(false); if (sMainThreadHandler == null) { sMainThreadHandler = thread.getHandler(); } if (false) { Looper.myLooper().setMessageLogging(new LogPrinter(Log.DEBUG, "ActivityThread")); } // End of event ActivityThreadMain. Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); Looper.loop(); throw new RuntimeException("Main thread loop unexpectedly exited"); }
nijian81机器人#5 · 2016/11/4
【 在 lixing 的大作中提到: 】 : 主线程也需要初始化Looper,只不过在启动MainActivity之前,已经由ActivityThread帮你完成了。 : [code=java] : public static void main(String[] args) { : ................... 嗯嗯