龙空技术网

2023/2024华为笔试机考校招/社招软件工程师岗位考什么?三道编程

职豚求职 57

前言:

此时同学们对“牛客网华为python”可能比较着重,看官们都想要知道一些“牛客网华为python”的相关知识。那么小编也在网摘上搜集了一些关于“牛客网华为python””的相关知识,希望各位老铁们能喜欢,你们一起来了解一下吧!

华为校招机考的题型:


编程:软件测试工程师,算法,OD岗,三道编程题不限语言【C++,Python,Java】

校招:600分 120分钟,100/200/300

社招:400分 150分钟, 100/100/200

华为的校招和社招编程考试通常覆盖了以下主要领域和知识点:

数据结构与算法:

基本数据结构:数组、链表、栈、队列、哈希表、集合、树、图等。

常见算法:排序(冒泡、选择、插入、快速、归并等)、查找(二分查找、广度优先搜索、深度优先搜索等)、动态规划、贪心算法、回溯法等。

常见问题:字符串操作、链表操作、二叉树遍历、图遍历、最短路径问题、最大子序列问题、最长公共子序列问题、背包问题等。


计算机基础知识:

操作系统:进程、线程、内存管理、文件系统、进程间通信、死锁等。

计算机网络:OSI 七层模型、TCP/IP 协议栈、IP 地址、子网划分、路由协议、HTTP 协议、DNS、网络安全等。

计算机组成原理:数据表示、运算器、控制器、存储器、输入输出设备、指令系统、总线、中断等。


编程语言及编程技巧:

掌握至少一门主流编程语言(如 C、C++、Java、Python 等),了解语言的基本语法、数据类型、控制结构、函数、类等概念。

熟悉常用库和API的使用,例如:STL(C++)、Java 标准库、Python 标准库等。

熟悉编程的基本技巧,例如:调试、代码优化、内存管理、时间复杂度和空间复杂度分析等。


软件工程及项目管理:

软件开发过程、软件开发方法论(如敏捷开发)、需求分析、设计、编码、测试、维护等阶段的知识。

熟悉软件质量保证、软件测试方法、软件配置管理等概念。

了解项目管理的基本原理,如项目规划、进度管理、风险管理、成本管理等。


数据库原理及应用:

熟悉关系型数据库原理,如 MySQL、Oracle、SQL Server 等,了解数据库设计、范式、SQL 语言、事务处理、并发控制等。

了解 NoSQL 数据库(如 MongoDB、Redis 等)的基本概念和应用。

在准备华为编程考试时,可以针对以上知识点进行复习,并通过在线编程平台练习


点主页可以看更多文章,每天一道编程题,分析思路以及解题代码。


下面给大家分享一个题的案例:

给定一个整数数组arr,将这个数组中的值进行解码。

解码规则:将数组中的元素转换成对应的ASCII码,解码后能拼出“csdnn”就视为解码成功(每个元素只能用一次)。解码成功返回1,否则返回0。

说明:数组中的数值均在小写字母之间(97-122),小写’a’的ASCII码是97,小写‘z’的ASCII码值是122。


示例1:

输入:[99,100,101,110,115]

输出:0

示例2:

输入:[99,100,110,101,115,110]

输出:1

二、C代码实现

代码如下:

#include<stdio.h>int decoding(int* arr, int arrLen) {    int a = 0, b = 0, c = 0, d = 0, e=0;	int i=0;	for(;i<arrLen;i++){        if (arr[i] == 99)            a = 1;        if (arr[i] == 115)            b = 1;        if (arr[i] == 100)            c = 1;        if (arr[i] == 110 && d == 1)            e = 1;        if (arr[i] == 110)            d = 1;    }    if (a&&b&&c&&d&&e) {        return 1;    }    else {        return 0;    }}

测试示例1:

int main() {    int arr[5] = {99,100,101,110,115};    int arrLen = 5;    int x=decoding(arr, arrLen);	printf("%d",x);	getchar();	return 0;}

运行结果:
0

测试示例2:

int main() {    int arr[6] = {99,100,110,101,115,110};    int arrLen = 6;    int x=decoding(arr, arrLen);	printf("%d",x);	getchar();	return 0;}

运行结果:
1

三、C++代码实现

代码如下:

#include<iostream>using namespace std;int decoding(int *arr, int arrLen){    int a = 0, b = 0, c = 0, d = 0, e = 0;    for (int i = 0; i < arrLen; ++i)    {        if (arr[i] == 99)            a = 1;        if (arr[i] == 115)            b = 1;        if (arr[i] == 100)            c = 1;        if (arr[i] == 110 && d == 1)            e = 1;        if (arr[i] == 110)            d = 1;    }    if (a && b && c && d && e)        cout << 1 << endl;    else        cout << 0 << endl;    return 0;}

测试示例2:

int main() {    int arr[6] = { 99,100,110,101,115,110 };    int arrLen = 6;    decoding(arr, arrLen);    return 0;}

运行结果:

1

四、Python代码实现:

def decode(arr):    # 计算数组中每个元素的出现次数    count = {}    for num in arr:        if num in count:            count[num] += 1        else:            count[num] = 1    # 检查“csdnn”中的每个字符的ASCII码是否在哈希表中,并且出现次数正确    target = "csdnn"    for ch in target:        ascii_code = ord(ch)        if ascii_code not in count or count[ascii_code] == 0:            return 0        count[ascii_code] -= 1    return 1# 测试示例arr1 = [99, 100, 101, 110, 115]arr2 = [99, 100, 110, 101, 115, 110]print(decode(arr1))  # 输出:0print(decode(arr2))  # 输出:1

这个解决方案的时间复杂度是 O(n),其中 n 是数组的长度。

这个问题用到的知识点有

哈希表:用来存储数组中每个元素的出现次数。

字符串:我们需要检查目标字符串 "csdnn" 中的每个字符。

ASCII 码:我们需要将目标字符串中的每个字符转换为它们对应的 ASCII 码,以便在哈希表中查找。

解题思路:

遍历输入数组,使用哈希表(Python中的字典)计算每个元素的出现次数。

遍历目标字符串 "csdnn",将每个字符转换为对应的 ASCII 码。

检查当前字符的 ASCII 码是否在哈希表中,并且出现次数大于 0。如果不满足这个条件,则返回 0。

如果当前字符的 ASCII 码在哈希表中,将其出现次数减 1。

如果所有字符的检查都通过,返回 1。

以下是我们邀请的华为导师MR.Zhangyu给大家的一些建议:

建立良好的编程基础:掌握至少一门主流编程语言,熟悉基本语法、数据类型、控制结构、函数和类等概念。同时熟悉常用的库和API,提高编程效率。
系统地学习数据结构和算法:学习常见的数据结构(如数组、链表、栈、队列、哈希表等)和算法(如排序、查找、动态规划、贪心算法等),并掌握它们的应用场景。理解时间复杂度和空间复杂度分析,优化代码性能。
多做练习:通过在线编程平台(如 LeetCode、牛客网等)做题,提高解题速度和技巧。针对华为的题目特点,关注一些典型问题和模式。
熟悉面试题库:参考华为历年编程题,了解题目类型和难度,找到自己的薄弱环节进行针对性的学习。
学会调试和优化:掌握使用调试工具排查问题的方法,学会分析代码性能,优化算法和内存管理。
加强计算机基础知识:复习操作系统、计算机网络、计算机组成原理等课程,强化对基本概念的理解。
模拟考试环境:在实际考试前,模拟考试环境,限时完成编程题,提高自己在压力下的应变能力。
保持良好的心态:面对编程考试,保持积极的心态,相信自己的实力,克服紧张情绪,发挥自己的最佳水平。
合理安排时间:在准备过程中,合理安排学习时间,避免临时抱佛脚,确保充足的复习时间。
交流与分享:和同学、朋友一起学习和讨论问题,分享解题经验,共同进步。

最后,祝你在机考中取得好成绩!华为10年经验多次OT留学生博士





标签: #牛客网华为python