前言:
现时我们对“牛客网华为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