首页 » 软件优化 » 2023/2024华为笔试机考校招/社招软件工程师岗位考什么?三道编程(华为编程笔试三道机考)

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

雨夜梧桐 2024-11-03 16:43:35 0

扫一扫用手机浏览

文章目录 [+]

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

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

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

2023/2024华为笔试机考校招/社招软件工程师岗位考什么?三道编程(华为编程笔试三道机考) 软件优化
(图片来自网络侵删)

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

数据结构与算法:

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

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

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

计算机基础知识:

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

计算机网络: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>intdecoding(intarr,intarrLen){inta=0,b=0,c=0,d=0,e=0;inti=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){return1;}else{return0;}}

测试示例1:

intmain(){intarr[5]={99,100,101,110,115};intarrLen=5;intx=decoding(arr,arrLen);printf("%d",x);getchar();return0;}

运行结果:0

测试示例2:

intmain(){intarr[6]={99,100,110,101,115,110};intarrLen=6;intx=decoding(arr,arrLen);printf("%d",x);getchar();return0;}

运行结果:1

三、C++代码实现

代码如下:

#include<iostream>usingnamespacestd;intdecoding(intarr,intarrLen){inta=0,b=0,c=0,d=0,e=0;for(inti=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;elsecout<<0<<endl;return0;}

测试示例2:

intmain(){intarr[6]={99,100,110,101,115,110};intarrLen=6;decoding(arr,arrLen);return0;}

运行结果:

1

四、Python代码实现:

defdecode(arr):#计算数组中每个元素的出现次数count={}fornuminarr:ifnumincount:count[num]+=1else:count[num]=1#检查“csdnn”中的每个字符的ASCII码是否在哈希表中,并且出现次数正确target="csdnn"forchintarget:ascii_code=ord(ch)ifascii_codenotincountorcount[ascii_code]==0:return0count[ascii_code]-=1return1#测试示例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留学生博士

标签:

相关文章