2024年安卓最全Android 开发中的一些小方法(2),2024年最新应届生面试硬件工程师回问哪些问题

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

img

我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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 注意事项

=====================

  1. 只开 Android Log(参考十一、SPRD平台 只开Android log方法

  2. 进入DEBUG&Log界面,system info-> Power Log;

  3. 打开PowerGuru logwakelock log

  4. 重启设备。

  5. 使用下面命令,复位一下battery history

面试复习路线,梳理知识,提升储备

自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。

关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

  • 架构师筑基必备技能
  • Android高级UI与FrameWork源码
  • 360°全方面性能调优
  • 解读开源框架设计思想
  • NDK模块开发
  • 微信小程序
  • Hybrid 开发与Flutter

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:

Android开发七大模块核心知识笔记

《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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面试应届硬件工程师助理时,面试官可能会关注以下几个方面的问题和你的回答: 1. **技术基础**: - 你能描述一下你的电子工程或计算机硬件课程学习的重点内容吗? - 你熟练掌握哪些硬件设计工具(如Altium Designer, Eagle等)?能举例说明使用经验吗? 2. **理论知识**: - 你能解释一下数字电路、模拟电路的基本概念和它们的区别吗? - 对于基本的硬件模块,比如输入/输出接口、时钟管理,你有哪些理解? 3. **项目经验**: - 如果你参与过学校或个人的硬件项目,能否分享一下你在项目的角色以及遇到的主要挑战和解决方案? 4. **问题解决能力**: - 描述一次你如何分析并解决硬件问题的经历,展示了你的逻辑思维和故障排查技巧。 5. **团队合作和学习能力**: - 在团队,你是如何处理不同意见并最终达成共识的? - 你是如何保持自我学习并跟进最新硬件技术的? **可能的答案示例**: - 我在大学期间系统学习了数字电路、模拟电路设计、微处理器原理等内容。使用Altium Designer时,我曾负责设计一个简单的LED灯控制系统。 - 数字电路主要处理离散信号,而模拟电路处理连续信号,例如放大器就是模拟电路应用。对于I/O接口,我了解如何配置断和同步通信协议。 - 在一次团队项目,我们设计了一台简易的嵌入式设备,我负责模块化设计,当我发现一个异常信号时,通过逐步调试和查阅资料找到了问题所在。 - 当遇到困难时,我会先独立思考,如果无法解决就主动寻求团队成员的帮助,共同找出解决方案。同时,我定期阅读硬件相关的书籍和技术博客,更新自己的知识库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值