华为OD面经

华为OD机试 2O22Q4 A卷

三道题 100分+100分+200分 150分就可以过 每道题是 分数为总分*测试用例通过比例,我这里过了2 3题 100%通过率,每道题大概讲一下题目.

第一题

给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值 第一行输入 m 接着输入m个数,表示此数组 数据范围:1<=M<=50, 1<=nums[i]<=50 这道题我这里没做出来,没有什么思路


第二题

求单项链表中间的节点值,如果奇数个节点去中间,偶数个取偏右边的那个值 输入: 第一行 链表头节点地址 后续输入的节点数n 后续输入没行表示一个节点,格式 节点地址 节点值 下一个节点地址(-1表示空指针) 输入保证链表不会出现环并且可能存在一些节点不属于链表 测试用例:

00010 4
00000 3 -1
00010 5 12309
11451 6 00000
12309 7 11451

输入:

6

思路:hashmap构建链表,先遍历一次记录链表长度size,再找下标为size/2的节点,不会超时 c++代码:

#include <iostream>
#include <unordered_map>
using namespace std;
struct ListNode {
	int val;
	int next;
	ListNode(int val, int next) {
		this->val = val;
		this->next = next;
	}
};
int main() {
	unordered_map<int, ListNode*> mp;
	int headAddr = 0, n = 0;
	cin >> headAddr >> n;
	for (int i = 0; i < n; i++) {
		int addr, val, next;
		cin >> addr >> val >> next;
		mp[addr] = new ListNode(val, next);
	}
	int size = 1, cur = 0;
	ListNode* head = mp[headAddr];
	ListNode* thead = head;
	while (thead->next != -1) {
		size++;
		thead = mp[thead->next];
	}
	while (head->next != -1) {
		if ((size / 2) == cur) {
			cout << head->val;
			return 0;
		}
		head = mp[head->next];
		cur++;
	}
	return 0;
}


第三题

给一个无向图染色,可以填红黑两种颜色,必须保证相邻两个节点不能同时为红色,输出有多少种不同的染色方案 第一行输入M(图中节点数) N(边数) 后续N行格式为:V1 V2表示一个V1到V2的边 数据范围:1<=M<=15,0<=N=<M*3,不能保证所有节点都是连通的 思路:这道题本来想用DFS遍历节点然后,但是不怎么会写,后来想到另一个思路,因为有N个节点,且N<=15用一个N位长的数字表示节点的染色方案,用一个vector存储所有的边,然后从0遍历到2^N-1判断每个方案是否合法就可以。 c++代码:

#include<iostream>
#include<utility>
#include<vector>
using namespace std;
typedef pair<int, int> pii;

int main() {
	int m, n;
	cin >> m >> n;
	int ans = 0;
	vector<pii> edges;
	for (int i = 0; i < n; i++) {
		int first, second;
		cin >> first >> second;
		edges.emplace_back(first, second);
	}
	for (int i = 0; i < (1 << m); i++) {
		bool flag = 1;
		for (pii p : edges) {
			if (((i >> p.first) & 1) && ((i >> p.second) & 1)) {
				flag = false;
				break;
			}
		}
		if(flag)ans++;
	}
	cout << ans;
}

评价一下 第一题和别人讨论过,感觉属于是个HARD题,2题最简单,模拟就行,3感觉考察DFS,BFS,这样的话就是一道比较常规的hard题。今天出结果了300分,感觉还行,本来目标是350+的。


2012/12/09

更新一下,一面没问什么,上来就手撕代码,题目为 leetcode 22.括号生成,dfs+回溯。 二面问了比较多再目前公司做的一些项目,八股问了一个concurrentHashMap(部门主要用的Java,虽然我刷题用的C++)手撕代码为leetcode 面试10.01合并排序数组,跟面试官说了一下思路然后面试官让用原地合并。

目前已经拿到offer,华为云,14级,15k,本科刚毕业而且目前工作没啥技术含量,所以没敢要太多。跟在华为的朋友了解了一下情况,他觉得目前华为云还是挺稳定的。

#华为Od##2022毕业生求职现身说法##华为机试,emo了##2022毕业即失业取暖地#
全部评论
第二题可以瞅瞅快慢指针法,很有用而且效率很高。面试问到你还能扯扯
5 回复 分享
发布于 2022-12-07 23:38 北京
北科也要看华为外包了嘛
5 回复 分享
发布于 2022-11-25 00:07 广东
第一题我觉得是不是可以通过求和,然后排序,从最大值开始累加找和为因数的满足条件
5 回复 分享
发布于 2022-11-18 10:38 江苏
本科生必会是么
3 回复 分享
发布于 2022-12-21 22:27 天津
15k包含绩效了吗
2 回复 分享
发布于 2023-01-03 20:56 湖北
顺带给自己打个广告,有想来的可以找我内推,或者已经入职的22届可以私聊我工号拉你进一个群,里面都是22届的
1 回复 分享
发布于 2023-03-25 20:58 上海
第一题数据量很小,你就可以求和,分解,知道 上限是多少了,暴力就应该能过,知道上限就是一个背包问题
1 回复 分享
发布于 2022-12-07 23:40 北京
插播一条,华为OD招聘,base成都北京深圳,HC多多,欢迎来聊
点赞 回复 分享
发布于 2023-03-02 19:44 广东
华为成研所大量招聘!Base成都!欢迎投递! 测试和开发都有~
点赞 回复 分享
发布于 2023-03-02 19:12 广东
感谢分享,很有用
点赞 回复 分享
发布于 2023-02-25 15:24 浙江
打个广告,招聘 华为OD/华为社招, 软件开发,软件测试岗位,工作地 南京,我们部门近两年发展迅速,OD和17级以上社招hc充足。 【招聘要求】 1、统招全日制本科及以上学历,计算机、电子、通信等相关专业 2、掌握Java、Python、C/C++、JS等主流开发语言中的一种 **************
点赞 回复 分享
发布于 2023-01-10 11:58 广东
请问python和cpp的机考题是同一套吗,还是说会不一样
点赞 回复 分享
发布于 2023-01-08 01:10 甘肃
感觉有点难哦
点赞 回复 分享
发布于 2022-11-14 21:13 四川

相关推荐

bg末2,鼠鼠从去年12月底开始学的,到今年3月底开始投简历了,一共学了三个月左右吧,只有大一时候学的c语言基础,一天6个小时左右。倒不是学习能力有多强,主要是会投机取巧吧。学完基本的东西就写了个烂大街的商城项目,然后就搁一边了,开始背八股,边背边往项目里填一些所谓的亮点区分点,感觉这确实是鼠鼠能有不少大厂约面的原因吧。框架烂大街没事,技术点要有区分度。之后就开始了鼠鼠煎熬的一个多月面试期。第一次面试是腾讯,拷打郁郁了直接,让鼠鼠明白自己🐶p不是,面完就给朋友发了好几条60s语音控诉回家考公得了谁要来当牛马。但鼠鼠这个人有个小优点,那就是健忘😆。一个小时后鼠鼠就忘了郁郁,骂骂咧咧气势汹汹地又奔向图书馆了。之后就是一次接一次的失败吧,有的是自己问题,有的感觉或许是kpi,鼠鼠也没什么心气接着每天复习面经和leetcode了,转而变成了接到约面电话后的一天时间里匆匆掠一遍就去面。或许是挂的多了有经验了,也或许是不那么在乎反而无心插柳了,备忘录里的一片❌也逐渐开始有了⭕,再到最终有了阿里和字节的oc。其实要是说从面试的第一场到现在有了什么技术上的进步吗,我感觉是没有的。那为什么从一面挂到能oc呢,或许运气和心态真的是很重要的因素吧,至少是对日常实习来说。好吧其实自言自语说了这么多,就是担心不要第一次上班的第一天就被发现是个大水货最后附个整个面试期的被鞭打记录📝
乡村Meg:面完手机上没软件了
点赞 评论 收藏
分享
1.实习学到的收获企业化的开发流程2.做的对自己有提升的点?说了调接口查询表格,实现订单的跟踪和合同入库3.做了什么比较难度的?模型微调,先是线程安全的配额检查,然后校验文件格式,然后冻结token,消息队列发送模型微调部署的消息,算法组那边拉取消息去部署,最后用定时任务检查微调任务状态并扣减token4.如果说算法那边部署出问题了怎么办?微调这个接口用什么指标来评价他的好坏?定时任务检查微调任务状态,如果部署失败重新发消息。主要是接口正常返回率和微调成功率吧。5.你说的这个jsonL文件是什么样的一问一答的格式6.那他如果很大怎么办?用的是oss上传api,分片上传,并且支持断点续传,显示上传进度7.用户把文件上传到服务器,服务器在传给对象存储,然后算法去对象存储里拉取是这样吗?是的8.那你只解决的服务器和对象存储之间的大文件传输问题,用户和服务器之间怎么办?不会,不是我做的9.你这里用到了redisson分布式锁是吧,说说咋用的用来记录用户当天调用服务的次数,并且保证其线程安全10.如果没有分布式锁会怎么样可能用户短时间内请求了很多次服务,但是当天的请求次数只加了1,这样会导致用户当天超额部署11.自己做的两个项目哪个熟一点?oj项目12.遇到了什么难点?主要是部署上线,我用云服务器安装宝塔linux部署这个项目,包括maven打jar包,放在vm上部署,最后要配置云数据库和云redis,解决前后端跨域问题。并且这个判题机用的process类执行代码的相关函数之前没有了解过。对我来说比较有挑战13.那你是用物理机部署的,了不了解容器化部署?kubernetes和docker?有没有用过实习的时候用的jenkins就是用的容器自动化部署,只要选择对应的git分支jenkins就会自动部署14.那你了解原理吗?不了解,只会用15.这个oj项目,应该有很多测试样例和输出答案吧?这个怎么做呢?这里首先用户把代码上传上来,然后后端会生成一个判题消息放在broker中持久化,然后判题机拉取消息拿到用户传来的代码,调用process函数拼接指令执行代码然后把执行结果记录到一个list中,有几个测试样例就执行几次,然后最后拿list和标准答案的list做比较,统计分数。16.数据库了解哪些索引b+树索引,主键索引,唯一索引,普通索引,聚簇非聚簇,倒排索引17.库表设计的时候,题目信息和用户传来的代码这两个string字段都比较大吧,那存的时候聚簇索引会出现什么问题?这个导致叶子节点很大,会增大插入和删除节点时维护b+树的压力。(这里答的不对,问ai是会导致每个页(通常16KB)能存储的记录数减少,数据量增长时更容易触发页分裂,页分裂会导致主键索引的维护成本增加,并且会使b+树变得更高,增大了查询成本18.jvm虚拟机垃圾回收了解多少标记整理算法,标记清除算法,复制算法,分代回收算法,CMS,g119.g1比CMS强在哪这里答的很拉,具体看小林coding吧20.我看你用到了rocketmq是吧,那消息丢失是怎么产生的,怎么解决的首先消费者到broker要用ack来确认,broker这边如果异步刷盘突然宕机会导致消息丢失,所以这里要改为同步刷盘,然后消费者这边拉了消息之后不能立刻向broker更新consumerQueue的位置,要等消费消息的逻辑完全结束才能去更新。21.平时玩啥游戏,有没有玩过国外的游戏,用啥加速器,为啥用雷电因为b站搜出来第一个就是他,而且他是按小时收费,感觉好一点22.按月收费和按小时收费你喜欢按小时收费是吧,为什么?23.反问主要做游戏的技术中台,负责游戏饰品交易,活动,游戏加速器,延迟检测等等估计凉凉
查看22道真题和解析
点赞 评论 收藏
分享
评论
27
97
分享

创作者周榜

更多
牛客网
牛客企业服务