ToB企服应用市场:ToB评测及商务社交产业平台

标题: 鸿蒙口试心得 [打印本页]

作者: 守听    时间: 2024-7-10 22:15
标题: 鸿蒙口试心得
自疫情过后,java和web前端都进入了冰河期间。年龄、薪资、学历都成了找工作路上躲不开的门槛。
年龄太大pass
薪资要高了pass
学历大专pass
好多好多pass
找工作的路上明明阳关普照,却有一种凄凄惨惨戚戚说不清道不明的“优雅”意境。
如何破局?
鸿蒙! 
好了废话不多说,下面进入正题
先聊一聊怎么学习鸿蒙

一、不建议报班

目前有好多培训班,对有web开辟履历的人来说,我个人不建议报班。
要耗费大量的时间
耗费一定的money,如今钱不好赚能省则省吧
 那么我们如何开始学习鸿蒙呢?
二 、B站

如今B站里面黑马、千峰、尚硅谷已经出了多期基础视频,可以先看看这些视频,然后跟着老师把项目写一下,大概花两周的时间吧。
如许可以快速的相识什么是鸿蒙,鸿蒙做了哪些变乱,为以后的自己独立学习奠定基础
三、鸿蒙官方API 

HarmonyOS应用-HarmonyOS开辟者-华为开辟者联盟
文档中心
或者
鸿蒙 ArkTS 应用快速上手手册_w3cschool
假如兄弟们时间告急可以先看下面这几个模块,一般看完口试就够用了
项目结构 

 


UI


假如ts单薄可以看看这个


有框架的认知
有ts处理逻辑
有UI展示页面
如许一个APP大概就全了,假如兄弟们还有精力,那肯定是api研究的越全面越好啦
口试 

假如兄弟们这些都学完了,那么可以举行口试了:
需要留意的是口试分线下口试和线上口试
线下口试

假如是线下口试那兄弟们要留意了,大概要现场写代码,以是我建议先学完了我上面说的再去口试。假如写不出来白白浪费了一次时机。
不过线下写代码也不要担心,一般都是基础布局,在固定的时间内完成就行。
我先说一下我线下口试时需要留意的事项:
1. 假如各人风俗键盘和鼠标的话最好自己备上。
2. 口试官的需求文档一定要先看懂了,有全局的把控再开始写代码,不懂就问。
3. 得分点一定要清楚,而且都要实现
详细有哪些得分点,我给兄弟们举几个我在口试中遇到的
1.  用到组件化思想
2. 布局元素不能少,也就是和UI设计高度保真
3. 一些范例最好定义成罗列
4. 颜色变量定义到这里

5. http哀求的封装
6. 列表只管用LazyForEach提升性能
 线上口试

 我这里总结了一些:
1. Module范例

分为ability范例和Library范例
ability范例(重点知道什么是HAP)
用于实现应用的功能和特性。每一个Ability范例的Module编译后,会天生一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单元,一个应用中可以包含一个或多个HAP包,详细包含如下两种范例。

Library范例的Module: (HAR、HSP)
用于实当代码和资源的共享。同一个Library范例的Module可以被其他的Module多次引用,合理地利用该范例的Module,能够降低开辟和维护成本。Library范例的Module分为Static和Shared两种范例,编译后会天生共享包。

    阐明
  实际上,Shared Library编译后除了会天生一个.hsp文件,还会天生一个.har文件。这个.har文件中包含了HSP对外导出的接口,应用中的其他模块需要通过.har文件来引用HSP的功能。为了表述方便,我们通常以为Shared Library编译后天生HSP。
  HAR与HSP两种共享包的重要区别体如今:
共享包范例编译和运行方式发布和引用方式HARHAR中的代码和资源跟随利用方编译,假如有多个利用方,它们的编译产物中会存在多份雷同拷贝。HAR除了支持应用内引用,还可以独立打包发布,供其他应用引用。HSPHSP中的代码和资源可以独立编译,运行时在一个历程中代码也只会存在一份。HSP一般随应用举行打包,当前只支持应用内引用,不支持独立发布和跨应用的引用。  HAR和HSP在APP包中的形态示意图


2. Arkts相干(假如兄弟们醒目ts可省略)

文档中心
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(页面)生命周期。


根据上面的流程图,我们从自定义组件的初始创建、重新渲染和删除来详细表明。
3.自定义组件的创建和渲染流程

4. 自定义组件重新渲染

当变乱句柄被触发(比如设置了点击变乱,即触发点击变乱)改变了状态变量时,或者LocalStorage / AppStorage中的属性更改,并导致绑定的状态变量更改其值时:
5. 自定义组件的删除

假如if组件的分支改变,或者ForEach循环渲染中数组的个数改变,组件将被删除:
不建议在生命周期aboutToDisappear内利用async await,假如在生命周期的aboutToDisappear利用异步操作(Promise或者回调方法),自定义组件将被生存在Promise的闭包中,直到回调方法被执行完,这个行为制止了自定义组件的垃圾回收。
以下示例展示了生命周期的调用机遇:
  1. // Index.ets
  2. import router from '@ohos.router';
  3. @Entry
  4. @Component
  5. struct MyComponent {
  6.   @State showChild: boolean = true;
  7.   @State btnColor:string = "#FF007DFF"
  8.   // 只有被@Entry装饰的组件才可以调用页面的生命周期
  9.   onPageShow() {
  10.     console.info('Index onPageShow');
  11.   }
  12.   // 只有被@Entry装饰的组件才可以调用页面的生命周期
  13.   onPageHide() {
  14.     console.info('Index onPageHide');
  15.   }
  16.   // 只有被@Entry装饰的组件才可以调用页面的生命周期
  17.   onBackPress() {
  18.     console.info('Index onBackPress');
  19.     this.btnColor ="#FFEE0606"
  20.     return true // 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理
  21.   }
  22.   // 组件生命周期
  23.   aboutToAppear() {
  24.     console.info('MyComponent aboutToAppear');
  25.   }
  26.   // 组件生命周期
  27.   onDidBuild() {
  28.     console.info('MyComponent onDidBuild');
  29.   }
  30.   // 组件生命周期
  31.   aboutToDisappear() {
  32.     console.info('MyComponent aboutToDisappear');
  33.   }
  34.   build() {
  35.     Column() {
  36.       // this.showChild为true,创建Child子组件,执行Child aboutToAppear
  37.       if (this.showChild) {
  38.         Child()
  39.       }
  40.       // this.showChild为false,删除Child子组件,执行Child aboutToDisappear
  41.       Button('delete Child')
  42.       .margin(20)
  43.       .backgroundColor(this.btnColor)
  44.       .onClick(() => {
  45.         this.showChild = false;
  46.       })
  47.       // push到page页面,执行onPageHide
  48.       Button('push to next page')
  49.         .onClick(() => {
  50.           router.pushUrl({ url: 'pages/page' });
  51.         })
  52.     }
  53.   }
  54. }
  55. @Component
  56. struct Child {
  57.   @State title: string = 'Hello World';
  58.   // 组件生命周期
  59.   aboutToDisappear() {
  60.     console.info('[lifeCycle] Child aboutToDisappear')
  61.   }
  62.   // 组件生命周期
  63.   onDidBuild() {
  64.     console.info('[lifeCycle] Child onDidBuild');
  65.   }
  66.   // 组件生命周期
  67.   aboutToAppear() {
  68.     console.info('[lifeCycle] Child aboutToAppear')
  69.   }
  70.   build() {
  71.     Text(this.title).fontSize(50).margin(20).onClick(() => {
  72.       this.title = 'Hello ArkUI';
  73.     })
  74.   }
  75. }
复制代码
  1. // page.ets
  2. @Entry
  3. @Component
  4. struct page {
  5.   @State textColor: Color = Color.Black;
  6.   @State num: number = 0
  7.   onPageShow() {
  8.     this.num = 5
  9.   }
  10.   onPageHide() {
  11.     console.log("page onPageHide");
  12.   }
  13.   onBackPress() { // 不设置返回值按照false处理
  14.     this.textColor = Color.Grey
  15.     this.num = 0
  16.   }
  17.   aboutToAppear() {
  18.     this.textColor = Color.Blue
  19.   }
  20.   build() {
  21.     Column() {
  22.       Text(`num 的值为:${this.num}`)
  23.         .fontSize(30)
  24.         .fontWeight(FontWeight.Bold)
  25.         .fontColor(this.textColor)
  26.         .margin(20)
  27.         .onClick(() => {
  28.           this.num += 5
  29.         })
  30.     }
  31.     .width('100%')
  32.   }
  33. }
复制代码
以上示例中,Index页面包含两个自定义组件,一个是被@Entry装饰的MyComponent,也是页面的入口组件,即页面的根节点;一个是Child,是MyComponent的子组件。只有@Entry装饰的节点才可以使页面级别的生命周期方法生效,因此在MyComponent中声明当前Index页面的页面生命周期函数(onPageShow / onPageHide / onBackPress)。MyComponent和其子组件Child分别声明白各自的组件级别生命周期函数(aboutToAppear / onDidBuild/aboutToDisappear)。

6. 自定义组件的冻结功能(要相识)

定义组件处于非激活状态时,状态变量将不响应更新,即@Watch不会调用,状态变量关联的节点不会刷新。通过freezeWhenInactive属性来决定是否利用冻结功能,不传参数时默认倒霉用。支持的场景有:页面路由,TabContent,LazyforEach,Navigation。
   阐明
  从API version 11开始,支持自定义组件冻结功能。 
  7. 常用装饰器

@Builder装饰器:自定义构建函数
@BuilderParam装饰器:引用@Builder函数
@Styles装饰器:定义组件重用样式
@Extend装饰器:定义扩展组件样式 
8. 状态管理

组件状态

 应用状态

UI层面

布局种类:


常用组件


 页面路由

文档中心
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-routing-V5
鸿蒙中嵌套web(偶然间可以相识,只在一次口试中问到)

文档中心
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ui-js-overview-V5
 最后在简历层面我再浅说几点:

1. 要写上鸿蒙的履历,最少一年吧。为什么这么写,兄弟们要明白,你第一关要过的是HR,至于口试官信不信那不重要,口试官关注的是技术点。
2. 在个人优势里要只管写鸿蒙相干的内容,基础也要写。照旧那句话HR要看。
3. 口试的时候会就是会,不会就是不会。鸿蒙都是刚起步,不会不丢人,不要模棱两可。
4. 口试的时候语速要慢,只管表达清晰。要自己先相信自己才能让口试官认可自己
5. 各人都是打工的,都是为了一个共同的方向在努力,没须要怯场,说话要平等大大方方的很重要
最后预祝各人口试乐成!
假如兄弟们想一起学习鸿蒙,或者有口试相干的题目,简历题目,或者想一起分享总结的。可以评论区留言,加个接洽方式,也可以私信弟弟。寒冬虽寒,但只要我们抱团取暖和,总有那一线生机。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4