Android 工程师的竞争环境越来越激烈,但 Andorid 开发仍然是一个刚需的工种,行业对人才的需求从未终止,但与此同时也对我们提出了更高的要求;如果你仍然只是在日常开发过程中复制粘贴,或者仍以完成一个项目需求为唯一目的,只是掌握了如何去调用某个 API 或者数据结构来实现某个功能,已经不能算是合格的工程师了
对于 Android 开发者来说,要成为优秀的 Android 开发工程师,不只能够让你在工作中更加游刃有余,同样会让你在职业发展中面临更多优质的机遇,那么在大厂面试中与项目相关的面试题有哪些呢?下面就给大家分享一下
Android 项目构建面试题分享git 常用命令有什么?
- git init:仓库的初始化
- git status:查看当前仓库的状态
- git diff:查看仓库与上次修改的内容
- git add:将文件放进暂存区
- git commit:提交代码
- git clone:克隆代码
- git bransh:查看当前分支
- git checkout:切换当前分支
git 工作流你怎么理解?
- fork/clone(主流)fork: 将别人的仓库代码fork到自己的仓库上
- clone: 克隆下自己仓库的代码
- updatecommit: 修改代码并提交到自己的仓库
- push: 提交到自己的仓库pull
- request: 请求添加到别人的仓库
proguard 是什么?
- ProGuard 工具是用于压缩、优化和混淆我们的代码,其主作用是移除或混淆代码中无用类、字段、方法和属性
proguard 技术功能有什么?
- 压缩
- 优化
- 混淆
- 预检测
一句话概况 proguard 工作原理
- 将无用的字段或方法存入到EntryPoint中,将非EntryPoint的字段和方法进行替换
为什么要混淆?
- 由于Java是一门跨平台的解释性语言,其源代码被编译成class字节码来适应其他平台,而class文件包含了Java源代码信息,很容易被反编译
annotationProcessor 与 compileOnly 的区别
- annotationProcessor: 编译时生成代码,编译完就不需要了
- compileOnly: 有重复的库时,可以剃除重复库,只保留一个库
annotationProcessor 与 compileOnly 都是只编译并不打入 apk 中
AsyncTask 面试题分享AsyncTask 是什么?
- 它本质上就是一个封装了线程池和 Handler 的异步框架
AsyncTask 引起的内存泄漏
- 原因: 非静态内部类持有外部类的匿名引用,导致 Activity 无法释放
- 解决: AsyncTask 内部持有外部 Activity 的弱引用AsyncTask改为静态内部类 AsyncTask.cancel()
AsyncTask 生命周期
- 在 Activity 销毁之前,取消 AsyncTask 的运行,以此来保证程序的稳定
AsyncTask 结果丢失
- 由于屏幕旋转、Activity在内存紧张时被回收等情况下,Activity会被重新创建,此时,旧的AsyncTask持有旧的Activity引用,这个时候会导致AsyncTask的onPostExecute()对UI更新无效
AsyncTask并行or串行
- AsyncTask在Android 2.3之前默认采用并行执行任务,AsyncTask在Android 2.3之后默认采用串行执行任务
- 如果需要在Android 2.3之后采用并行执行任务,可以调用AsyncTask的executeOnExecutor()
就举例这么多了,面试题也不是几个就能全部覆盖的,毕竟面试官不是吃素的,他会换着花样问你;有想跳槽拿高薪的 Android 开发的朋友,我这里分享一份 Android 精选面试 PDF 文档;点击此处查看直达方式 或者私信发送 【面试】 直达获取;想拿高薪的人很多,就看你肯不肯努力了
内容展示如下:
由于篇幅有限,内容就不完全展示了;如果大家想要获取的话,可以私信发送 【面试】 即可 免费获取哦~
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗~