近期面试小结(1),2024年最新HarmonyOS鸿蒙移动应用开发答案

第二部分现在相对内容比较少,负责的内容是生成一个lock commit,还有一个就是我们的changelog周知的能力。

每日检查我们会定义一些代码质量相关的,会在一些闲时的时候进行一些耗时任务,比如每日全量的代码质量,每日全量的unittest,分层编译所有的模块资源,snoarquebe上传等等。

做这些的目的主要就是让ci侧更加健壮,很多事情都还是ci侧要先行一步的,毕竟所有代码的合并流程都是从这边开始的。

工具链支持

这部分应该算是投资回报率(ROI)最低的工作内容了,我们需要把工程内所有基础sdk还有agp,kgp等等编译工具链都完成一次统一的迭代升级操作。更多的是升级带来的风险,所以我们因此开发了一套changelog周知的能力,把这部分变更合入到mastr之后主动的告知给所有的研发同学。

你们怎么做合规?

为了保障工程的长治久安,我们是通过lint去做整个工程的后续增量检查,由于我们在mr合入阶段设置了lint的增量卡口,所以就能防止后续新增代码调用这些敏感的api相关了。

然后就是方便测试的调试工具,我们通过art hook的形式把这部分可调试能力对测试同学进行了支持,如果在这个阶段调用了敏感的api,就会直接崩溃并把堆栈进行输出。

最后自然就是asm的兜底,把所有敏感的api通过字节码框架进行统一的替换,守住整个app的下限。

因为合规相关的诉求又和启动链路息息相关,所以我们也通过DAG的形式梳理了整个启动链路,并对其进行了task化改造。

然后因此我们公司内部还在推动所有基础sdk的二次迭代,让他们具备自动编排启动的能力。

sdk设计

不是我自夸,其实这部分设计能力我真的遥遥领先。以下内容纯粹个人看法,接下来开始我的表演。

首先是针对于接口编程那一套,让业务之间的交互都是基于接口,而把实现类内聚与当前的模块中,这样就能做到里式替换原则。

另外一点很重要的就是依赖最小化,使用方会喷sdk的依赖太重导致整个包体积激增,所以依赖是要好好控制的,除非是一定是要使用,否则能不依赖的库就不依赖,能写成抽象接口的就写成抽象接口。

入口参数最小化,最好不要直接使用基础的数据类型,而建议通过构造器模式,然后构造一个对象传入sdk的入口函数中,方便后续拓展。否则频繁的增加入口参数会让业务唾弃你的sdk。

以支付作为一个栗子,将支付渠道打散之后,我们可以通过反射或者类查找器的机制获取到代码中的实现类,然后将整个sdk组装起来。

更便捷的接入方式,如果是一个平台方,就需要考虑业务的接入成本,因为你真的需要用质疑的眼光来看待你的接入方,他真的可能会给你折腾出很多奇奇怪怪的幺蛾子的。

kmp

跨端一直都是面试中的一个比较常见的问题,如果面试官有兴趣你可以用类似这样的课题主动去吸引他。

我在阿逼完成了工程的kmp的安卓端编译支持工作,让iOS和安卓工程可以共享一个kmp的工程进行打包,从而实现业务的跨端共享。

另外我们内部使用了大量的proto协议,为了支持kmp,我们新写了一个proto->kt的生成的插件,让工程能使用纯原生的kt代码,从而更简单的支持双端网络协议请求。

最后我们也把kmp完全应用到线上,相比较于其他的跨端框架,kmp的优势在于可以写一些重逻辑的双端统一逻辑,比如说类似折扣结算啊什么的,这种如果双端不一致就会出问题的业务。但是如果要拿来写一些ui相关的话,当前kmp的支持能力还是比较糟糕的。

面试技巧

面试虽然大部分情况下很讲运气,但是也还是有非常多的技巧的。

你需要掌握主动权,大部分时候自我介绍的环节就是你开始引导面试官的第一步。不要简单的介绍完时间地点人物就结束了。你要勾起面试官的注意力把你想讲给面试官听的内容先说出来,这样后面他的提问环节问你擅长问题的概率就会变大。

其次就是如果碰到了自己不太熟悉的问题,你要做的是先不要紧张,你要先去询问面试官的想法,比如说他想问你一个埋点库的设计,但是其实你并没有做过这部分的内容,但是我之前是写过支付对应的sdk的,所以我先会尝试和面试官询问他想要了解的埋点库的内容是什么,然后开始引导他说其实这部分监控能力其实同样也存在在支付sdk中。然后把他拉到我擅长的领域,这样就可以一定程度的掌控面试的节奏了。

面试的时长基本都是固定的,聊项目的时间越多八股文还有算法题的比重自然也就越少。

三面挂?

之前和网友聊天,有人说不知道为啥老是会三面挂掉,三面面试官问了我一个技术深度的问题,我不知道咋回答?

我其实以前在面试的时候碰到这题,我会和面试官聊一些什么特别小的技术细节。这两年经过了一次晋升答辩之后其实我貌似想通了这件事情,面试官想要的根本不是你的技术细节是啥,毕竟术业有专攻,短短的几分钟怎么能聊清楚呢。

三面面试官一般来说他的职级是比较高的,对他而言他根本就不关心你的技术细节是什么。他其实关心的是你做事的方法,就是你碰到了一个问题之后,你是如何定位如何解决这个问题,然后为了防止后续继续出现这个问题你的技术手段是啥?这个技术手段有没有可能被沿用到别的技术问题上去。

如果解决了一个技术问题,你只解决了其中的异常而没有考虑到如何做一些后续的治理工作,虽然你可能用的技术很酷,但是我建议你换个内容。

最好的面试内容就是给面试官画适当的饼,描绘出一幅蓝图愿景。这样我觉得通过三面的概率会大大增加,对方会觉得你是一个有长期规划的人。

最后瞎扯两句

最后点题下行情真的非常差的,尤其是对大龄开发来说,如果不是必要情况下真的不建议大家裸辞找工作的。

面试的过程中建议大家都还是提早准备下,模拟下面试环境什么的,珍惜每一次的面试机会,毕竟用一次少一次的。招人的公司就这么几家,如果错过了可能就是错过了(废话文学)。

最后知识梳理了一下前面面试中问的一些技术问题,整理了一些的电子书和面试笔记等学习文档进行参考学习,这些笔记将各个知识点进行了完美的总结(包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等)。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

.(img-MTmlm8fJ-1712800192737)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值