几道Android开发面试题

tworoad 2013-06-16 11:56:59
前段时间面试被问到的几个问题,有兴趣的朋友,可以帮忙回答一下。

1、在开发一款Android应用时,如果让你给这个应用搭建一个框架或者叫架构,请问你主要会做哪些工作?

2、开发过程中如果遇到问题,请问你解决问题的思路是什么?

3、在开发应用时,我们经常会用到线程池,请问为什么要用线程池?创建线程池的时候,一般会用到哪些比较重要的参数?

4、在与网络交互时,同时最多能够创建多少个http连接?最多发送多少个http请求?

5、Activity切换时(比如从Activity跳转到ActivityB),经常会遇到黑屏,请问为什么会黑屏,有哪些解决方法?

6、在AsyncTask的doInBackground方法里,如果想与主线程交互,都有哪些方法,直接在doInBackground方法里面new Handler()可不可以?
...全文
356 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
6楼的解答很中肯
zhyntc54321 2013-06-18
  • 打赏
  • 举报
回复
1、2随便扯扯就行了 3、线程池主要功能是线程重用,避免重复创建销毁线程 楼上几位说的直接重写系统的AsyncTack是会出问题的,重复创建AsyncTack会导致FC,这个问题有很多帖子讲了,楼主可以搜搜看。 线程池关键参数,看下线程池的构造方法就知道了,不用过多解释吧。。。 int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue 4、做过这么多项目还真没遇见过http请求上限的问题,因为在同一个页面,如果同时请求数量太多了,那么就是设计失败,一般3个以下。后台service轮播线程一般为一个,不会太多。 5、View创建和数据加载必须分开,View创建和渲染在主线程,数据加载在子线程。 6、onPreExecute、onProgressUpdate、onPostExecute是分别在线程执行前、中、后的回调。直接new Handler()会报未执行Handler.prepare()错误。如果一定要使用Handler,可以new Handler(Looper.getMainLooper()); 并使用post方法将Runnable加入Handler
fire_fire_fire 2013-06-17
  • 打赏
  • 举报
回复
引用 楼主 tworoad 的回复:
前段时间面试被问到的几个问题,有兴趣的朋友,可以帮忙回答一下。 1、在开发一款Android应用时,如果让你给这个应用搭建一个框架或者叫架构,请问你主要会做哪些工作? 2、开发过程中如果遇到问题,请问你解决问题的思路是什么? 3、在开发应用时,我们经常会用到线程池,请问为什么要用线程池?创建线程池的时候,一般会用到哪些比较重要的参数? 4、在与网络交互时,同时最多能够创建多少个http连接?最多发送多少个http请求? 5、Activity切换时(比如从Activity跳转到ActivityB),经常会遇到黑屏,请问为什么会黑屏,有哪些解决方法? 6、在AsyncTask的doInBackground方法里,如果想与主线程交互,都有哪些方法,直接在doInBackground方法里面new Handler()可不可以?
1.可以通过建立model,db,wcf/webservice这些包来分别管理不同的业务 2.遇到异常等方面的问题先debug,遇到思路上的问题可以google 3.没用到过线程池,一般都是通过继承Thread类或AsyncTack来实现多线程 4.创建http链接的数量和http请求的最大值这个真不知道,但是我遇到过连接过多导致内存溢出的情况,我想这应该是和机器有关吧?(请知道的网友具体解答一下,谢谢) 5.A->B黑屏一般是因为B在oncreate或其他方法中在主线程中做了耗时操作导致的 6.在调用doInBackground前可以使用onPreExecute,在调用doInBackground中可使用onProgressUpdate,在调用doInBackground后使用onPostExecute来与主线程交互,关于使用new Handler()是否可与主线程交互的问题没有实际使用过,但是最好还是使用自带的方法比较好一些
DrSmart 2013-06-17
  • 打赏
  • 举报
回复
都是基础,这面试也太简单了吧。
梦清扬 2013-06-17
  • 打赏
  • 举报
回复
还好我在做项目当中遇到过
shen330 2013-06-17
  • 打赏
  • 举报
回复
3.线程池可以 有效重用 已经创建的线程对象,节省对系统资源的开销,在Android 里管用的方式应该是直接重写 AsyncTask 实现逻辑就行了, 因为AsyncTask 内部已经使用了先进的线程池框架。 5.添加 Activity 切换动画时 会出现黑屏,原因是 Activity 实际最外层是一个 Window ,Window 对象的背景默认就是黑色,所以切换时 实际上 黑屏的 Window先出现在界面上,然后Activity 内容才以动画形式出现。 解决方式 是为 Activity 添加 style , 详细可以 google 一下。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧