Android面试题1

1、     面向对象设计模式你知道的有哪些?
单例模式、简单工厂、工厂方法、抽象工厂、代理模式、适配器模式等
2、    什么是 MVC
MVC 全名是 Model View Controller ,是模型 (model) -视图 (view) -控制器 (controller) 的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 MVC 被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
3、    Android 中如何理解 MVC
M Model )用于封装数据源的元类型,例如使用 GSON 解析时 JSON 数据对应的类
V View )用于用户交互界面,在 Android 中通常指各种控件( android.view.View 的各种子类型)
C Controller )用于封装逻辑,在 Android 中又可以将其分为数据控制器( Data Controller )和视力控制器( View Controller )。数据控制器用于操作各种数据源(网络数据源、本地数据源等),例如各种网络访问框架、本地数据库操作框架均属于数据控制器。视图控制器用于操作各种界面逻辑,如 Android 中的 Activity Fragment Adapter
4、    Android 中,你通常如何实现网络访问操作
1)     使用 URLConnection+Handler 实现
2)    使用 URLConnection+AsyncTask 实现
3)    将上述两点中的 URLConnection 换成 OKHttp
4)    Volley 框架
5)    xUtils 中的 httpUtils 框架
5、    Android 中你通常如何实现 JSON 数据解析
1)     使用系统原生的 JSONObject JSONArray 实现解析
2)    使用 GSON 实现 JSON 数据解析
6、    Android 中你通常如何实现网络图片显示
1)     原生方式实现网络图片文件载到本地,再加载本地图片文件
2)    使用 Volley 中的网络图片加载功能
3)    使用 xUtils 中的 imageUtils 中的图片加载功能
4)    使用 Universal-Image-Loader
5)    使用 Picasso
6)    使用其他的第三方图片加载库
7、    Android 中使用 Universal-Image-Loader 进行网络图片访问时,缓存分为几级?都是什么?
三级。分别是内存缓存、本地文件缓存和网络缓存
8、    你在 Android 中如何操作本地 SQLite 数据库
1)     使用系统原生的 SQLite 操作
a)          使用 SQL 语句直接操作
b)          使用 Insert Update Delete Query 方法操作
2)    使用 xUtils 中的 DbUtils
3)    使用其他第三方 SQLite 封装库
9、    你在 Android 中,使用过的 Adapter 有哪些?如何选择各种 Adapter
ArrayAdapter :使用数组或 List<T> 数据源,绑定时一项只有一个控件能够进行绑定
SimpleAdapter :使用 List<Map<String,?>> 数据源,绑定时一项可以有多个控件进行绑定
继承 SimpleAdapter :使用 List<Map<String,?>> 数据源,可以在 SimpleAdapter 绑定的基础上添加一些不能绑定的数据
BaseAdapter :自定义绑定的各种操作(重写 4 个方法的含意)
SimpleCursorAdapter :使用本地数据库或都 ContentProvider 返回的 Cursor 作为数据源
10、 在使用 BaseAdapter 实现 ListView 数据绑定时,如何提高性能
1)     使用 convertView 的复用
2)    使用 ViewHolder ,减少 findViewById 的数量
3)    在项中使用异步数据访问,加载图片
4)    数据分页加载、显示
11、   是否使用过 RecyclerView ,谈谈如何使用 RecyclerView 显示数据
RecyclerView 绑定数据时,使用继承于 RecyclerView.Adapter 的子类进行数据绑定,另外还需要使用继承于 RecyclerView.ViewHolder 的子类
继承于 RecyclerView.ViewHolder 的子类用于封装 RecyclerView 数据项所对应的控件及控件中的所有子控件
继承于 RecyclerView.Adapter 的子类需要重写三个方法:
1)     getItemCount 方法,返回 RecyclerView 的项的数量
2)    onCreateViewHolder 方法用于创建 RecyclerView 项所对应的控件
3)    onBindViewHolder 方法用于将数据源的数据绑定到 RecyclerView 的项上
使用 RecyclerView 进行数据绑定显示时,使用 MVC 模式,分离了数据绑定的各部分组件,使其耦合性降低
12、 你在项目中使用的版本控制工具有哪些?通常在什么时间提交代码?
常用的版本控制工具有: SVN Git Visual Source Safe VSS
通常一个功能点或一个逻辑做完就要提交( Commit )代码
13、 QQ 第三方登录为例,说说第三方登陆的流程是怎么样的
1)     app 中点击第三方登录
2)    若手机中安装了 QQ ,则跳转到 QQ App ,由 QQ App 授权
3)    若手机中没有安装 QQ ,则打开网页版,先进行登录,再进行授权
4)    授权后返回 app ,若登录、授权成功,返回成功信息及用户 Token ;若失败则返回错误信息
5)    使用返回的用户 Token ,可以获取到公开的用户信息(由用户授权访问的信息),如 QQ 昵称、头像等。用户的登录帐号( QQ 号)、登录密码等是不会返回的。
14、 远程消息推送的流程?
由于国内的特殊原因,通常远程消息推送都是使用第三方提供的推送服务,或自行开发基于 XMPP 的推送服务器。
以个推为例:
1)     客户 App 向个推服务器注册远程消息服务,个推服务器返回相应的 CID Client Id ),通常客户端 App CID 上传至应用程序服务器,与服务器中的用户帐户进行绑定
2)    在特定情况下,应用程序服务器向个推服务器发送远程推送请求,将用户的 CID 及要发送的消息发送给个推服务器
3)    个推服务器按 CID (或用户群组、昵称等)向用户设备发送远程推送消息
4)    客户端 App 中的 Receiver 接收到消息广播,获取消息中的内容,根据内容执行相应的操作
15、 实现支付宝第三方支付的流程是什么?
1)     商家注册支付宝用户帐户,生成加密用的密钥(私钥与公钥),将公钥上传至支付宝服务器,并下载支付宝提供的加密密钥中的公钥
2)    用户 App 集成支付宝 SDK 后,按要求构建商品订单字符串
3)    使用用户加密密钥中的私钥加密数据,并将其通过支付宝 SDK 发送给支付宝手机客户端或网页版支付页面
4)    由支付宝手机客户端或网页版支付页面完成支付功能,并返回支付结果
5)    用户 App 使用支付宝密钥中的公钥解密返回的数据( JSON 字符串),并解析 JSON 内容,向用户显示成功或失败信息
16、 你将开发一个应用程序,包含用户注册、登录及第三方登录功能,你将如何设计这个流程
1)     在应用程序服务器中,使用数据库保存用户信息,使用网络数据接口实现用户登录、注册功能
2)    在应用程序服务器中,提供第三方登录注册及获取对应用户信息的接口
3)    在应用程序服务器中,统一注册、登录及第三方登录映射的本地用户信息
17、 如何实现使用手机定位获取用户所在的城市
1)     使用百度地图或高德地图等第三方地图 SDK ,使用其内部提供的定位及地理编码获取城市信息
2)    使用系统原生方式
a)          使用 GPS 传感器获取经纬度
b)          使用 Geocoder 进行地理编码,获取城市信息
18、 Android 中本地数据持久化有哪些方式
1)     SharedPreferences
2)    SD 卡文件
3)    本地 SQLite 数据库
4)    ContentProvider
19、 两个 Activity 中怎么传递(共享)数据
1)     使用 startActivity 时,使用 Intent 传递数据
2)    在使用 startActivityForResult setResult 时,使用 Intent 传递数据
3)    在同一应用程序的两个无关联的 Activity 中,使用类中的静态成员方法共享数据
4)    在同一应用程序的两个无关联的 Activity 中,使用自定义 Application 中定义属性及 set get 方法共享数据
20、   如何生成签名的 APK 文件
1)     定义 keystore 文件
2)    使用 keystore 文件生成 APK
基于两种平台的操作过程: Eclipse Android Studio
21、 横竖屏切换时候 Activity 的生命周期
1)     不设置 Activity android: configChanges 时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
2)    设置 Activity android: configChanges= orientation ”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
3)    设置 Activity android: configChanges= orientation|keyboardHidden ”时,切屏不会重新调用各个生命周期,只会执行 onConfiguration 方法
22、Activity 被系统回收,如何保存及恢复状态
1)     保存数据状态:在 Activity onSaveInstanceState 方法中,将需要保存的数据写入 Bundle
2)    恢复数据状态:在 Activity onCreate 方法中,判断参数 savedInstanceState 是否为空,是否包含你所需要的状态,如果有则由其恢复状态
23、 网络数据访问及 JSON 解析时,通常需要处理的错误有哪些(按顺序说明)
1)     网络连接错误,如连接超时等
2)    网络返回状态码不是 200 ,例如: 403 404
3)    返回的 InputStream 不能转换为字符串
4)    转换的字符串不能解析为 JSON 数据
5)    解析后的 JSON 数据中的服务器返回的逻辑错误
24、 列举出网络访问返回的状态码及其含意
特别注意红色字体部分
1xx - 信息提示
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。
· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。( HTTP 1.1 新)
· 101 - Switching Protocols 服务器将遵从客户的请求转换到另外一种协议( HTTP 1.1 新)
2xx - 成功
这类状态代码表明服务器成功地接受了客户端请求。
· 200 - OK 一切正常,对 GET POST 请求的应答文档跟在后面。
· 201 - Created 服务器已经创建了文档, Location 头给出了它的 URL
· 202 - Accepted 已经接受请求,但处理尚未完成。
· 203 - Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝,非权威性信息( HTTP 1.1 新)。
· 204 - No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而 Servlet 可以确定用户文档足够新,这个状态代码是很有用的。
· 205 - Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容( HTTP 1.1 新)。
· 206 - Partial Content 客户发送了一个带有 Range 头的 GET 请求(分块请求),服务器完成了它( HTTP 1.1 新)。
3xx - 重定向
客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
· 300 - Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在 Location 应答头指明。
· 301 - Moved Permanently 客户请求的文档在其他地方,新的 URL Location 头中给出,浏览器应该自动地访问新的 URL
· 302 - Found 类似于 301 ,但新的 URL 应该被视为临时性的替代,而不是永久性的。注意,在 HTTP1.0 中对应的状态信息是“ Moved Temporatily ”。出现该状态代码时,浏览器能够自动访问新的 URL ,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和 301 替换使用。例如,如果浏览器错误地请求 http://host/~user (缺少了后面的斜杠),有的服务器返回 301 ,有的则返回 302 。严格地说,我们只能假定只有当原来的请求是 GET 时浏览器才会自动重定向。请参见 307
· 303 - See Other 类似于 301/302 ,不同之处在于,如果原来的请求是 POST Location 头指定的重定向目标文档应该通过 GET 提取( HTTP 1.1 新)。
· 304 - Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供 If-Modified-Since 头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的
文档还可以继续使用。
· 305 - Use Proxy 客户请求的文档应该通过 Location 头所指明的代理服务器提取( HTTP 1.1 新)。
· 307 - Temporary Redirect 302 Found )相同。许多浏览器会错误地响应 302 应答进行重定向,即使原来的请求是 POST ,即使它实际上只能在 POST 请求的应答是 303 时才能重定向。由于这个原因, HTTP 1.1 新增了 307 ,以便更加清除地区分几个状态代码:当出现 303 应答时,浏览器可以跟随重定向的 GET POST 请求;如果是 307 应答,则浏览器只能跟随
GET 请求的重定向。( HTTP 1.1 新)
4xx - 客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
· 400 - Bad Request 请求出现语法错误。
· 401 - Unauthorized 访问被拒绝,客户试图未经授权访问受密码保护的页面。应答中会包含一个 WWW-Authenticate 头,浏览器据此显示用户名字 / 密码对话框,然后在填写合适的 Authorization 头后再次发出请求。 IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示:
· 401.1 - 登录失败。
· 401.2 - 服务器配置导致登录失败。
· 401.3 - 由于 ACL 对资源的限制而未获得授权。
· 401.4 - 筛选器授权失败。
· 401.5 - ISAPI/CGI 应用程序授权失败。
· 401.7 –访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
· 403 - Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。禁止访问: IIS 定义了许多不同的 403 错误,它们指明更为具体的错误原因:
· 403.1 - 执行访问被禁止。
· 403.2 - 读访问被禁止。
· 403.3 - 写访问被禁止。
· 403.4 - 要求 SSL
· 403.5 - 要求 SSL 128
· 403.6 - IP 地址被拒绝。
· 403.7 - 要求客户端证书。
· 403.8 - 站点访问被拒绝。
· 403.9 - 用户数过多。
· 403.10 - 配置无效。
· 403.11 - 密码更改。
· 403.12 - 拒绝访问映射表。
· 403.13 - 客户端证书被吊销。
· 403.14 - 拒绝目录列表。
· 403.15 - 超出客户端访问许可。
· 403.16 - 客户端证书不受信任或无效。
· 403.17 - 客户端证书已过期或尚未生效。
· 403.18 - 在当前的应用程序池中不能执行所请求的 URL 。这个错误代码为 IIS 6.0 所专用。
· 403.19 - 不能为这个应用程序池中的客户端执行 CGI 。这个错误代码为 IIS 6.0 所专用。
· 403.20 - Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
· 404 - Not Found 无法找到指定位置的资源。这也是一个常用的应答。
· 404.0 - (无)–没有找到文件或目录。
· 404.1 - 无法在所请求的端口上访问 Web 站点。
· 404.2 - Web 服务扩展锁定策略阻止本请求。
· 404.3 - MIME 映射策略阻止本请求。
· 405 - Method Not Allowed 请求方法( GET POST HEAD DELETE PUT TRACE 等)对指定的资源不适用,用来访问本页面的 HTTP 谓词不被允许(方法不被允许)( HTTP 1.1 新)
· 406 - Not Acceptable 指定的资源已经找到,但它的 MIME 类型和客户在 Accpet 头中所指定的不兼容,客户端浏览器不接受所请求页面的 MIME 类型( HTTP 1.1 新)。
· 407 - Proxy Authentication Required 要求进行代理身份验证,类似于 401 ,表示客户必须先经过代理服务器的授权。( HTTP 1.1 新)
· 408 - Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。( HTTP 1.1 新)
· 409 - Conflict 通常和 PUT 请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。( HTTP 1.1 新)
· 410 - Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和 404 的不同在于,返回 407 表示文档永久地离开了指定的位置,而 404 表示由于未知的原因文档不可用。( HTTP 1.1 新)
· 411 - Length Required 服务器不能处理请求,除非客户发送一个 Content-Length 头。( HTTP 1.1 新)
· 412 - Precondition Failed 请求头中指定的一些前提条件失败( HTTP 1.1 新)。
· 413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个 Retry-After 头( HTTP 1.1 新)。
· 414 - Request URI Too Long URI 太长( HTTP 1.1 新)。
· 415 –不支持的媒体类型。
· 416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的 Range 头。( HTTP 1.1 新)
· 417 –执行失败。
· 423 –锁定的错误。
5xx - 服务器错误
服务器由于遇到错误而不能完成该请求。
· 500 - Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
· 500.12 - 应用程序正忙于在 Web 服务器上重新启动。
· 500.13 - Web 服务器太忙。
· 500.15 - 不允许直接请求 Global.asa
· 500.16 UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
· 500.18 URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
· 500.100 - 内部 ASP 错误。
· 501 - Not Implemented 服务器不支持实现请求所需要的功能,页眉值指定了未实现的配置。例如,客户发出了一个服务器不支持的 PUT 请求。
· 502 - Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。亦说 Web 服务器用作网关或代理服务器时收到了无效响应。
· 502.1 - CGI 应用程序超时。
· 502.2 - CGI 应用程序出错。
· 503 - Service Unavailable 服务不可用,服务器由于维护或者负载过重未能应答。例如, Servlet 可能在数据库连接池已满的情况下返回 503 。服务器返回 503 时可以提供一个 Retry-After 头。这个错误代码为 IIS 6.0 所专用。
· 504 - Gateway Timeout 网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。( HTTP 1.1 新)。
· 505 - HTTP Version Not Supported 服务器不支持请求中所指明的 HTTP 版本。( HTTP 1.1 新)
25、 如何保证一个 Service 不被用户关闭
定义监视电池电量变化的广播接收器,在其中判断 Service 是否在运行,如果没有运行,则启用 Serivice
26、   如何在应用程序中使用带某些固定数据的 SQLite 数据库
方法一:在 OpenDatabaseHelper onCreate 中,使用 SQL 语句添加这些数据
方法二:开发时,将数据添充到 SQLite 数据库中,将数据库文件添加到应用程序资源文件里。第一次运行时,将数据库复制到 SD 卡,应用程序打开此 SQLite 数据库文件
27、 使用 Android Studio 时,如何加载第三方库
1)     加载 jar 包:将 jar 包复制到 libs 目录,在 gradle 中添加文件绑定
2)    加载 so 包:将 so 包复制到 jniLibs 目录
3)    加载模块:将项目导入到 Android Studio 中,在 gradle 中添加模块绑定
4)    加载 Marven 库:直接在 gradle 中添加库绑定
28、 你在做一个页面,实现网络数据访问, JSON 解析,然后将结果显示在 ListView 中,执行后发现程序没有崩溃,没有异常信息,但界面没有任何显示,你将如何进行调试排错?
按以下顺序进行检查:
1)     将所有 try…catch 中的异常信息进行打印,查看是否有异常产生
2)    如可以,将网络访问的 URL Log 中输出,并在浏览器中访问,看是否有结果
3)    Log 中打印网络返回的字符串(需要将 InputStream 转换为字符串)
4)    字符串转换为 JSON 时是否转换成功
5)    JSON 数据封装为 Model 类时是否可功,在 Log 中打印 Model 的所有属性值
6)    Adapter getCount 方法里,使用 Log 输出返回的结果
7)    getView 方法里
a)          检查对应的元数据
b)          检查控件是否为空,及显示的样式等
c)          检查控件与数据的绑定
29、   AsyncTask 必须要重写的方法和可以重写的方法有哪些?在什么时候执行?在哪个线程中执行?
必须重写的方法:
1)     doInBackground 方法,此方法中写异步执行的代码,并返回异步执行的结果。此方法在子线程中执行
可以重写的方法:
1)     onPreExecute 方法:在 doInBackground 之前执行
2)    onPoseExecute 方法:在 doInBackground 之后执行,其参数为 doInBackground 方法返回的结果
3)    onProgress 方法:异步执行的进度发生变化时执行
4)    onCancel 方法:异步任务被取消时执行
以上 4 个方法均在 UI 线程(主线程)中执行。
30、   Content Provider URI 的组成部分有哪些?
URI 由是部分组成:
A ,标准的前缀 : ContentProvider (内容提供者)的 scheme 已经由 Android 所规定, scheme 为: content://
B ,唯一标识整个 Content Provider: 主机名(或叫 Authority )用于唯一标识这个 ContentProvider ,外部调用者可以根据这个标识来找到它。
C ,描述了数据的路径,确定返回哪类数据 : 路径( path )可以用来表示我们要操作的数据,路径的构建应根据业务而定
D ID 唯一标注请求的数据 : 我们要请求数据的 ID 。此部分是非必须的。
31、 Android 中的动画有哪些?
Android 中动画可以分为两大类:帧动画、补间动画
1)     补间动画:你定义一个开始和结束,中间的部分由程序运算得到。主要有:旋转、平移、放缩和渐变; AlphaAnimation (渐变型动画)、 scaleAnimation (缩放型动画)、 TranslateAnimation (平移型动画)、 RotateAnimation (旋转型动画)
2)    逐帧动画: Frame (把一连串的图片进行系列化连续播放,如同放电影的效果),它是通过播放一张一张图片来达到动画的效果
32、Android 中音乐的播放方式有哪些
1)     MediaPlayer :主要用于播放音频,可以播放视频,但是一般不用其进行视频播放。
2)    SoundPool :主要用于播放一些短促的声音片段,主要优势是 cpu 资源占有量低,反应延迟小。
33、Android 中视频的播放方式有哪些
1)     VideoView
2)    SurfaceView+ MediaPlayer
3)    其他第三方视频播放控件
34、 如何在 ListView 中播放视频
1)     ListView Item 中,定义 FrameLayout ,用户承载视频播放控件和替代显示内容
2)    点击 Item 替代内容的播放按钮时,切换 FrameLayout 显示的内容,播放视频
3)    监听 ScrollListener ,对于正在播放视频的 Item 滚动出屏幕外时,停止视频的播放
4)    Item 项播放与全屏播放的切换及状态保存
35、 如何实现传感器开发
1)     获取系统服务( SENSOR_SERVICE) 返回一个 SensorManager 对象
sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE);
2)    通过 SensorManager 对象获取相应的 Sensor 类型的对象
sensorObject = sensormanager.getDefaultSensor(sensor Type);
3)    声明一个 SensorEventListener 对象用于侦听 Sensor 事件,并重载 onSensorChanged 方法
SensorEventListener sensorListener = new SensorEventListener(){};
4)    注册相应的 SensorService
sensormanager.registerListener(sensorListener, sensorObject, Sensor TYPE);
5)    销毁相应的 SensorService
sensormanager.unregisterListener(sensorListener, sensorObject);
36、   说说你常用的 Android 应用程序首页面的布局结构
1)     RadioGroup+Fragment
2)    TabLayout+ViewPager+Fragment
3)    DrawerLayout+Fragment
4)   
37、 如何实现 ListView GridView 嵌套时的高度自适应
1 )自定义类继承 ListView GridView ,重写 onMeasure 方法
2 )在布局 Layout 文件中,定义这个子类的控件,并将其高度设置为 wrap_content
38、 简述广告轮播的实现
1)     使用 ViewPager+ 控件或 Fragment 实现内容的展示
2)    使用 Timer 实现定时器
39、   你使用过哪些 ListView 的上、下拉刷新
1)     使用 onScrollListener 结合 ListView headerView footerView 实现
2)    使用第三方如 PullToRefreshListView 实现
3)    使用 SwipeRefreshLayout 实现
40、   如何实现侧滑菜单
1)     DrawerLayout
2)    第三方 SlideMenu
3)    SlidePaneLayout
另: NavigationView 实现常规的侧滑菜单布局
41、 Android 5.0 的新特性有哪些
1)     全新 Material Design 设计风格
2)    支持多种设备
3)    全新的通知中心设计
4)    支持 64 ART 虚拟机
5)    Project Volta 电池续航改进计划
6)    全新的“最近应用程序”
7)    改进安全性
8)    不同数据独立保存
9)    改进搜索
10) 新的 API 支持,蓝牙 4.1 USB Audio 、多人分享等其它特性
42、Android 6.0 的新特性有哪些
1)     锁屏下语音搜索
2)    指纹识别
3)    更完整的应用权限管理
4)    Doze 电量管理
5)    Now on Tap 功能
6)    App Links
43、 你将要实现如下的界面,其中数据需要分页加载,请说出你实现此界面的思路
1)     主界面使用 ListView ,考虑分页可以使用 PullToRefreshListView 或者 SwipeRefreshLayout 嵌套 ListView
2)    ListView headerView 中,加载上部分的各选项,可选用 LinearLayout 嵌套 LinearLayout 实现
3)    设置 onScrollListener 监听器,监听滚动条的位置,若头视图滑出屏幕,则显示右上“按人气”视图
4)    网络访问部分
5)    网络访问返回的数据与界面的结合
6)    上面各选项点击与网络访问的结合
以下问题请结合你选择的公司及项目进行回答
44、 你所在公司有多少人?开发人员有多少人? Android 有多少人?
45、 你所开发的 X 项目团队是如何组成的?
46、   如果你是 X 项目开发时的 Leader ,你如何进行项目分工的
47、 你开发的 X 项目使用的网络访问框架是什么?为什么选择这个框架?
48、 在开发 X 项目时,你遇到的最大的技术问题是什么?如何解决的?
49、   你所在公司对于开发过程中的源代码注释书写有什么要求
50、   你如何看待 Android 开发与 iOS 开发
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值