如何做好面试突击,规划学习方向?
面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。
我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2.debug 重启 开机向导方案
跳过开机向导 后 又想重新走开机向导,可以尝试以下命令。
- 1.将开机向导 完成后设置的值复位
命令如下:
adb shell settings put secure user_setup_complete 0 adb shell settings put global device_provisioned 0
- 2.设置开机向导可用,并启动
过完开机向导后,会设置开机向导apk
不可用。
此时我们应该设置开机向导为enble
状态。
adb shell pm enable com.google.android.setupwizard/.SetupWizardActivity adb shell am start -n com.google.android.setupwizard/.SetupWizardActivity
3. 开机向导 log 调试
打开开机向导调试Log
方式如下:
adb shell setprop log.tag.SetupWizard VERBOSE
4. 代码中跳过开机向导的方法
在代码中跳过开机向导的方法如下:
private void SkipSetupwizard(){ ActivityManager activityAanager = (ActivityManager) mContext .getSystemService(Context.ACTIVITY_SERVICE); ComponentName cn = activityAanager.getRunningTasks(1).get(0).topActivity; String pName = cn.getPackageName(); if("com.google.android.setupwizard".equals(pName)) { Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1); activityAanager.forceStopPackage("com.google.android.setupwizard"); Log.i("wjwj","----------skip com.google.android.setupwizard--------"); } }
三、查看APP启动时间
===========
1.使用adb 命令抓log 查看
adb logcat | findstr Displayed
或者直接抓取 adb Log, 然后搜索关键字 Displayed
APP 冷启动时间统计
adb Log 中搜索关键字Display
2.查看多次 app 冷启动的方法
测试 10次 Chrome 冷启动的方法如下:
adb shell am start -S -R10 -W com.android.chrome/com.google.android.apps.chrome.Main
测试结果如下:
C:\Users\Administrator>adb shell am start -S -R10 -W com.android.chrome/com.google.android.apps.chrome.Main Stopping: com.android.chrome Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.chrome/com.google.android.apps.chrome.Main } Status: ok Activity: com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivity TotalTime: 1514 WaitTime: 1525 Complete Stopping: com.android.chrome Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.android.chrome/com.google.android.apps.chrome.Main } Status: ok Activity: com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivity TotalTime: 534 WaitTime: 549 Complete
四、判断 user ,userdebug 版本的方法
==========================
private static final boolean USER_BUILD = android.os.Build.IS_USER;
查看 Build.java 发现,这些是对外部apk 隐藏的方法,只有系统平台 签名的应用才可以使用。
/** {@hide} */ public static final boolean IS_ENG = "eng".equals(TYPE); /** {@hide} */ public static final boolean IS_USERDEBUG = "userdebug".equals(TYPE); /** {@hide} */ public static final boolean IS_USER = "user".equals(TYPE);
五、修改截屏默认存储路径
============
/frameworks/base/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
// import com.mediatek.storage.StorageManagerEx; String defaultWritePath = StorageManagerEx.getDefaultPath()+File.separator+"Pictures"; mScreenshotDir = new File(defaultWritePath, SCREENSHOTS_DIR_NAME);
六、解析 kernel dump 方法
===================
1.将所有的systemdump 文件追加到一个文件中
首先我们需要抓到dumpsys log,然后将所有的systemcore* 文件 追加到一个文件中。
cat systemcore* > all
将sysdump 所有文件 追加到一个文件中
2. 使用对应版本的vmlinux 解析dump文件
使用 crash_arm 命令对 dump 文件进行解析
- 32位系统使用如下:
./crash_arm vmlinux all -m phys_base=0x80000000
- 64位系统使用如下命令:
./crash_arm64 vmlinux all -m phys_offset=0x80000000
3.解析成功后进行调试
成功解析dump后解析log方法
log > log.txt
使用 log 命令 读取log 到指定文件
七、SPRD 默认打开 Ylog 以及dumpsys enable方法
===================================
修改 device\sprd\xxxx\common\rootdir\root\init.common.rc
在on post-fs-data
中添加如下内容:
on post-fs-data … setprop persist.ylog.enabled 1//增加这一句用于打开ylog setprop debug.sysdump.enabled true //增加这一句用于打开sysdump setprop persist.sys.eng.reset 1 //再增加这一句 start ylog
八、判断是否正在 monkey 测试的方法
=====================
public boolean isMonkeyRunning() { return ActivityManager.isUserAMonkey(); }
九、修改MTK log 模式的方法
=================
修改以下路径下配置的属性值既可alps\device\mediatek\common\mtklog
将false
改为true
就可以打开对应的log
mtklog_path = internal_sd com.mediatek.log.mobile.enabled = false com.mediatek.log.mobile.maxsize = 500 com.mediatek.log.mobile.totalmaxsize = 1000 com.mediatek.log.modem.enabled = false com.mediatek.log.modem.maxsize = 2000 com.mediatek.log.net.enabled = false com.mediatek.log.net.maxsize = 600 com.mediatek.log.gps.enabled = false
十、MTK平台 只开Mobile log方法
======================
输入暗码 *#*#3646633#*#*
,进入MTK Logger
界面,右上角打开Logger Setting
,手动关闭除Moblie Log
之外的开关。
关闭方法请看下图:
mtk 平台开启 Mobile log 参考图
十一、SPRD平台 只开Android log方法
=========================
输入暗码 *#*#83781#*#*
,进入SPRD Logger
界面,右上角打开Settings
, 点击Custom scene
,关闭除Android log
之外的开关,关闭方法请看下图。
SPRD 平台开启 Android log 参考图
十二、SPRD 平台功耗 Log 注意事项
=====================
-
只开 Android Log(
参考十一、SPRD平台 只开Android log方法
) -
进入
DEBUG&Log
界面,system info
->Power Log
; -
打开
PowerGuru log
和wakelock log
; -
重启设备。
-
使用下面命令,复位一下
battery history
面试复习路线,梳理知识,提升储备
自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。
关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)
- 架构师筑基必备技能
- Android高级UI与FrameWork源码
- 360°全方面性能调优
- 解读开源框架设计思想
- NDK模块开发
- 微信小程序
- Hybrid 开发与Flutter
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
,代表重要推荐指数
[外链图片转存中…(img-o8rHbncZ-1715732241339)]
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!