首页 > 其他分享 >2024鸿蒙开发【面试题库】,转岗看这一篇就够了【收藏篇】

2024鸿蒙开发【面试题库】,转岗看这一篇就够了【收藏篇】

时间:2024-08-28 13:26:25浏览次数:12  
标签:状态栏 鸿蒙 number 就够 2024 转岗 controller preference 页面

鸿蒙面试浪潮来袭,你是否也想着利用这次机会去实现,跳槽涨薪的梦呢?

如果关注了华为鸿蒙的人应该知道:鸿蒙开发岗位需求飙升6倍! 可想而知该岗位前景多么广阔,为此就为大家整理些(鸿蒙HarmonyOS)开发岗位面试题。

面试题目

  1. 页面和组件的生命周期,及其流程
    在这里插入图片描述
  2. @Entry 装饰的页面和 Navigation 组件里的页面,有什么区别

@Entry 装饰的页面
1.定义:是一个基本的页面,每一个页面都需要在 main_page.json 中声明
2.路由:这种页面是路由的起点,通常用于展示应用的入口
3.生命周期:具有通用的生命周期方法,如 @Entry 修饰的页面中的通用方法
Navigation 组件
1.定义:是一个导航容器,挂载在单个页面下
2.路由:支持跨模块的动态路由,通过自定义路由表或系统路由表实现页面的跳转
3.页面结构:由标题栏、内容区和工具栏组成,支持页面的路由能力和多种显示模式
4.显示模式:可以设置为单页显示或分栏显示模式,适应不同设备尺寸

  1. 常用的状态装饰器有哪些
    在这里插入图片描述
  2. 常用的动画有哪些

一、组件的属性动画
二、页面间的转场动画
三、lolita 库加载动画资源文件

  1. ArkTs 和 Ts 有什么区别在这里插入图片描述
  2. 动态 import 加载模块,以及反射
// Calc.ets 
export class Calc { 
  public constructor() {} 
 
  public static staticAdd(a: number, b: number): number { 
    return a + b;  
  } 
 
  public instanceAdd(a: number, b: number): number { 
    return a + b; 
  } 
} 
 
export function addHarLibrary(a: number, b: number): number { 
  return a + b; 
} 
 
// index.ets 
let harLibrary = 'harlibrary'

// 动态import变量是新增特性,入参换成字符串'harlibrary'是现有特性。也可使用await import方式
import(harLibrary).then((ns: ESObject) => { 

  // 反射调用静态成员函数staticAdd() 
  ns.Calc.staticAdd(7, 8); 
  
  // 实例化类Calc 
  let calc: ESObject = new ns.Calc(); 
  
  // 调用实例成员函数instanceAdd() 
  calc.instanceAdd(8, 9); 
  
  // 调用全局方法addHarLibrary() 
  ns.addHarLibrary(6, 7); 
})

  1. 如何做沉浸式状态栏
  1. 理解沉浸式状态栏
    沉浸式状态栏是指应用程序的内容充满整个屏幕,‌包括状态栏区域,‌从而提供更流畅、‌更沉浸的用户体验。‌在鸿蒙系统中,‌可以通过设置全屏布局和调整状态栏颜色等方式来实现沉浸式效果。
  2. 实现沉浸式状态栏的具体方法
    方法一:‌使用setWindowLayoutFullScreen方法
    这是鸿蒙系统提供的一个直接设置全屏的方法,‌通过调用此方法可以实现沉浸式状态栏效果。‌具体步骤如下:‌
    在onWindowStageCreate方法中获取主窗口对象。‌
    调用setWindowLayoutFullScreen(true)方法将窗口布局设置为全屏

‌代码示例‌:‌

onWindowStageCreate(windowStage: window.WindowStage): void {
    windowStage.getMainWindow().then(window => {
        window.setWindowLayoutFullScreen(true);
    });
    // 加载页面内容
    windowStage.loadContent('pages/Index', (err, data) => {
        if (err.code) {
            console.error('Failed to load the content', err);
            return;
        }
        console.info('Succeeded in loading the content', data);
    });
}

方法二:‌设置背景色统一
如果只需要实现状态栏与导航栏、‌主内容区的颜色统一,‌可以通过设置整体窗口的背景色来实现视觉上的沉浸式效果。‌这种方法不需要将窗口设置为全屏,‌但可以通过颜色的统一来减少突兀感

onWindowStageCreate(windowStage: window.WindowStage): void {
    // 加载页面内容
    windowStage.loadContent('pages/Index', (err, data) => {
        if (err.code) {
            console.error('Failed to load the content', err);
            return;
        }
        // 设置背景色实现沉浸式
        windowStage.getMainWindowSync().setWindowBackgroundColor('#9F6BF5');
    });
}
  1. 如何实现垂直的三栏布局
    在这里插入图片描述
  2. @Entry 装饰的页面,A 页面跳到 B 页面后再跳回 A 页面,如何获取 B 页面的返回值
router.back({
  url: 'pages/Home',
  params: {
    info: '来自Home页'
  }
})

// 这些参数可以在目标页面中
// 通过调用 router.getParams() 方法进行获取
 onPageShow() {
    const params = router.getParams() as Record<string, string>
    console.log(params)
  }

  1. 如何实现给父组件传递子组件

使用 @BuilderParam
以下示例代码是我个人开发中该组件的简化版

@Component
export struct Visible {
  @Prop isShow: boolean = true
  @BuilderParam children: () => void = this.EmptyBuilder

  @Builder
  EmptyBuilder() {
  }

  build() {
    Column() {
      this.children()
    }
    .visibility(this.isShow ? Visibility.Visible : Visibility.Hidden)
  }
}

// 使用
Visible({ isShow: true }) {
  Tech()
}

  1. 使用router.back() 方法返回到原来的页面,会触发原页面的 aboutToAppear() 生命周期回调吗,会触发哪个生命周期?

不会触发 aboutToAppear,但是会触发 onPageShow()

12.UIAbility 和 WindowStage 的生命周期,及其流程
在这里插入图片描述
12. Model 分为几种类型,分别是什么
在这里插入图片描述
13. Model 分为几种类型,分别是什么
在这里插入图片描述

  1. Hap、Har、Hsp 分别是什么,它的特点及其应用场景
    在这里插入图片描述
    在这里插入图片描述

  2. 简单说下开发阶段、编译阶段、发布阶段的包结构
    在这里插入图片描述
    在这里插入图片描述

  3. 什么是应用模型
    在这里插入图片描述

  4. 简单解释下 Stage 模型
    在这里插入图片描述

  5. build() 函数内的语法需要遵守什么限制
    在这里插入图片描述
    19.web 和原生组件通信

import { webview } from '@kit.ArkWeb'

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController()
  
  build() {
    Column() {
      // 三种加载网页的方式
      Web({ src: $rawfile("index.html"), controller: this.controller })
      Web({ src: "resource://rawfile/index.html", controller: this.controller })
      Web({ src: 'www.example.com', controller: this.controller })
      .zoomAccess(false)
      .aspectRatio(1)
      .javaScriptAccess(true)
      .onPageEnd(async e => {
         // 调用网页内函数并获取返回值
         const res = await this.controller.runJavaScript('test()')
       })
       // 页面上调用 confirm() 函数时触发,以此来实现页面向原生通信
      .onConfirm(event => {
         
      })
    }
  }
}


// module.json5 访问网络前需要申请网络权限
"module": {
    "requestPermissions": [
         {"name": "ohos.permission.INTERNET"}
     ]
 }

20.持久化存储

preference: preferences.Preferences

this.preference = preferences.getPreferences(getContext(this), 'my-preference')

// 读取,异步的方法,也有 getSync 这样同步的方法
const res = await this.preference.get(key, defaultValue)

// 写入
this.preference.put('accountInfo', response)

// 写到文件
this.preference.flush()

// 清空
this.preference.clear()

21.Worker 和 TaskPool 的区别
在这里插入图片描述

重点放最后

随着,市场上的鸿蒙开发岗位加;许多程序员开始面向鸿蒙岗位,有关前端面试题。

为了避免大家在学习过程中产生更多的时间成本找资源,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!

标签:状态栏,鸿蒙,number,就够,2024,转岗,controller,preference,页面
From: https://blog.csdn.net/weixin_43617604/article/details/141633511

相关文章

  • 【ACMMM2024】Multi-Scale and Detail-Enhanced Segment Anything Model for Salient
    论文:https://arxiv.org/pdf/2408.04326代码:https://github.com/BellyBeauty/MDSAM论文的研究动机就是使用SAM来解决显著性检测(SOD)问题,主要有两个改进:提出了LightweightMulti-ScaleAdapter,LMSA来微调SAM提出了Multi-LevelFusionModule,MLFM和DetailEnhancementM......
  • 不用再找了,国内无限制使用GPT 4o 的方法【2024年9月 亲测好用】
    都知道ChatGPT很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,无所不能~那么到底怎么使用呢?其实很简单了,国内AI产品发展也很快,很多都很好用了~我一直在用,建议收藏下来~  有最先进、最新的GPT模型,还有很多其他效率工具都是在各自领域,绝对领先地位的产品~①......
  • 2024.08.20 校招 实习 内推 面经
    1、校招|华为智能汽车解决方案BU2025届应届生招聘正式启动!校招|华为智能汽车解决方案BU2025届应届生招聘正式启动!2、校招|行深智能2025校园招聘正式启动(内推)校招|行深智能2025校园招聘正式启动(内推)3、校招|宁德时代2025届全球校园招聘正式启动!校招|宁德......
  • 界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合
    TelerikUIforASP.NETCore是用于跨平台响应式Web和云开发的最完整的UI工具集,拥有超过60个由KendoUI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格,提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。本文将介绍界面组件TelerikUIforASP.NETCore在今年......
  • CSEC:香港城市大学提出SOTA曝光矫正算法 | CVPR 2024
    CSEC:香港城市大学提出SOTA曝光矫正算法|CVPR2024 在光照条件不佳下捕获的图像可能同时包含过曝和欠曝。目前的方法主要集中在调整图像亮度上,这可能会加剧欠曝区域的色调失真,并且无法恢复过曝区域的准确颜色。论文提出通过学习估计和校正这种色调偏移,来增强既有过曝又有欠......
  • 2024 windows系统下 Qt 加载 OCCT的方法
    一使用的版本OCCT使用了最新版,于2023.11.08发布的7.8.0。是用windowsvisualstudio编译后的软件包, 编号v143,就是VS2022所编译的。Download-OpenCASCADETechnologyhttps://dev.opencascade.org/release OCCT在qt运行时,所需的第三方依赖全部集中起来了,在github......
  • 运维怎么转行网络安全?零基础入门到精通,收藏这一篇就够了
    经常有人问我:干网工、干运维多年遇瓶颈,想学点新技术给自己涨涨“身价”,应该怎么选择?聪明人早已经用脚投票:近年来,越来越多运维的朋友寻找新的职业发展机会,将目光聚焦到了网络安全产业。1、为什么我建议你学习网络安全?有一种技术人才:华为阿里平安等大厂抢着要,甚至高薪难求......
  • CSEC:香港城市大学提出SOTA曝光矫正算法 | CVPR 2024
    在光照条件不佳下捕获的图像可能同时包含过曝和欠曝。目前的方法主要集中在调整图像亮度上,这可能会加剧欠曝区域的色调失真,并且无法恢复过曝区域的准确颜色。论文提出通过学习估计和校正这种色调偏移,来增强既有过曝又有欠曝的图像。先通过基于UNet的网络推导输入图像的增亮和变暗......
  • FlexAttention:解决二次复杂度问题,将大型视觉语言模型的输入提升至1008 | ECCV 2024
    \({\ttFlexAttention}\)是一种旨在增强大型视觉语言模型的方法,通过利用动态高分辨率特征选择和分层自注意机制,使其能够有效地处理并从高分辨率图像输入中获得优势,\({\ttFlexAttention}\)在性能和效率方面超越了现有的高分辨率方法。来源:晓飞的算法工程笔记公众号论文:F......
  • SDKD 2024 Summer Training Contest E2补题
    SDKD2024SummerTrainingContestE2A-PaperWatering题意对x进行至多k次操作(平方或开方后向下取整),求可以得到多少不同的数。思路平方完一定不同,且平方完后一定能开方出整数,所以只用额外考虑开方后平方的情况。若开方再平方与原来不同,则答案加上当前变化数的次数,直到变......