华为面试笔试题算法
华为招聘笔试、面试 试题及经验
第一部分,不定向选择第二部分,填空题1. 什么是UML?分哪两类?2. OS一般的两种进程调度策略3. 进程间的四种通讯方式4. 一棵二叉树的前序,中序,后序遍历结果第三部分,问答题1. 通常递归所采用的数据结构?递归和循环的区别?2. 将一个单链表逆序。
3. A,B,C,D四个进程,A向一个缓冲区写数据,B,C,D从该缓冲区读数据,A 要等到B,C,D都已经读好才能写下一个。
用p,v操作实现通讯。
4. C 程序写运行结果。
class A{public:void f1(){printf("A::f1\r\n");}virtual void f2(){printf("A::f2\r\n");}void callfunc(){printf("A::callfunc\r\n");f1();f2();}};class B :public A{public:void f1(){printf("B::f1\r\n");}void f2(){printf("B::f2\r\n");}void callfunc(){printf("B::callfunc\r\n");f1();f2();}};int main(){B *pB=new B;pB->callfunc();A *pA=pB;pA->callfunc();return 0;} 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、前面已经有人写了,hehe,我写一下稍微详细的版本:中断优先级排序补码:写出0,-1,-5的二进制补码递归的优缺点;写程序的结果;求出一个学生成绩数组的max,min和average的值网络知识:路由器的作用,DNS的原理项目开发:软件流程,瀑布模型;黑盒测试数据库:创建一个数据库,创建一个表,包含主键,索引。
华为面试笔试题算法工程师
通知九点面试,结果在那里等到了大概九点四十多,以为自己等了很久,没想到还有一批八点十五面试的同学还没进去。
谁知道就我这丢三落四的性格,连简历都忘带了呢,哭笑脸
一面:面试官主要就几个项目问的问题,主要是提醒以后写自己的项目的时候最好提及到改善的效果,具体到数字最好,毕竟数字最能体现自己的劳动成果;感觉自己逻辑还是不算很清楚的那种人,叙述自己的项目不能说的娓娓道来,就像讲故事一样。
一面面试官听了我说我比较喜欢稍微有压力的工作,开始给我介绍他们上线一个产品的具体流程,告诉我中间可能哪些环节会产生压力,然而我表现得无所畏惧(其实是吓怕了),然后还跟我提前知会了华为的加班情况,就问你怕不怕。
二面面试官是一个超级可爱的小老头儿,说他在华为工作二十多年了,原话是“签了二十多年奋斗者协议”,没给我吓死。
他从我回答问题的言语中,看出了我性格的弱点,我真是太年轻了。
因为面试的时候我一般都比较诚恳,所以可能也暴露出来了一定的缺点。
主要是就压力,以及性格以及之后是否能承受华为工作的辛苦讨论了一下。
秋招也面试了几家公司了,没想到华为问的技术是最少的。
华为硬件笔试题、面试题
一简答1.CISC,RISC答:CISC(复杂指令集计算机)和RISC(精简指令集计算机)是前CPU 的两种架构。
早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。
CISC(Complex Instruction Set Computer)结构有其固有的缺点,CISC 指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。
而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。
RISC 并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。
RISC 结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。
到目前为止,RISC体系结构也还没有严格的定义,一般认为,RISC 体系结构应具有如下特点:采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
使用单周期指令,便于流水线操作执行。
大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。
当然,和CISC 架构相比较,尽管RISC 架构有上述的优点,但决不能认为RISC 架构就可以取代CISC 架构,事实上,RISC 和CISC 各有优势,而且界限并不那么明显。
现代的CPU 往往采CISC 的外围,内部加入了RISC 的特性,如超长指令集CPU 就是融合了RISC 和CISC 的优势,成为未来的CPU 发展方向之一2.数据链路层答:数据链路可以粗略地理解为数据通道。
物理层要为终端设备间的数据通信提供传输媒体及其连接,.媒体是长期的,连接是有生存期的。
在连接生存期内,收发两端可以进行不等的一次或多次数据通信.每次通信都要经过建立通信联络和拆除通信联络两过程.这种建起来的数据收发关系就叫作数据链路.二填空1.IIR滤波器答:IIR滤波器有以下几个特点:①IIR数字滤波器的系统函数可以写成封闭函数的形式。
华为面试笔试题目(附答案).doc
华为面试/笔试题目(附答案)(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
(2)char * const p char const * p const char *p 上述三个有什么区别?答案:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl;结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
华为面试 笔试题目(附答案)
华为面试/笔试题目(附答案)陈晓明2010-05-21 15:45:59要查看更多华为笔经相关信息,请访问华为公司校园招聘club:深圳华为技术有限公司(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
(2)char * const p char const * p const char *p 上述三个有什么区别?答案:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p(3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str 6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout (y)?(y):(x)) //结尾没有‘;’(10)嵌入式系统中经常要用到无限循环,你怎么用c编写死循环。
答案:while(1){}或者for(;;)(11)关键字static的作用是什么?答案:定义静态变量(12)关键字const有什么含意?答案:表示常量不可以修改的变量。
(13)关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
算法:华为面试代码题
算法:华为⾯试代码题题⽬:找出字符串中的元⾳字符并按序构成字符串(⼩写字符和⼤写字符按序排列)。
1、元⾳字符:a,e,i,o,u, A,E,I,O,U2、函数原型:void findObj(const char* s, char* out);3、例: s = "xyzabc123BaUAUooe"; ==> out = "aaeooAUU";有效代码如下:#include<stdio.h>#include<math.h>typedef unsigned int u32;typedef unsigned short int u16;typedef unsigned char u8;#define max 255void findObj(const char* src,const char* obj,char* out){char count[255]={0};int i=0;//初始化很重要,要不然 i 的值⽆法确定int j=0;printf("%s\n", src);//printf("%s\n", obj);while(src[i]){printf("%d\n", src[i]);count[src[i++]]++;}i=0;while(obj[i]){for(j=0;j<count[obj[i]];j++){*out++=obj[i];}i++;}*out=0;}int main(){u8 t;printf("开始\n");char tx[max];for(t=0;t<max-1;t++){tx[t]=0;}findObj("xyzabc123BaUAUooe","ae2AEIOU",tx);printf("%s\n", tx);return 0;}依据ASSIC码表,创建⼀个数组,遍历查找的字符串,根据ASSIC表255个元素,count[src[i++]]++,有了对应的元素,则数组对应位置加1,⽐如a为120,字符串中有3个,则count[120]=3从printf("%d\n", obj[i]);处可知,根据输⼊参数const char* obj按序查找count数组中对应的值的数⽬,再依次 *out++=obj[i];赋值给结果字符串从⽽实现时间复杂度O(n) 最坏情况循环次数为strlen(src) * 2扩展性上,⽀持任意⽬标字符的⾃定义。
华为算法工程师笔试题
华为算法工程师笔试题华为算法工程师笔试题HCNA认证包括但不限于:网络基础知识,流行网络的基本连接方法,基本的网络建造,基本的网络故障排除,华为路由交换设备的安装和调试。
下面是店铺收集的华为算法工程师笔试题,希望大家认真阅读!1.通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例输入:“deefd” 输出:“def”输入:“afafafaf” 输出:“af”输入:“pppppppp” 输出:“p”main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。
一定要保证编译运行不受影响using namespace std;bool g_flag[26];void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr){assert(pInputStr != NULL);int i = 0;if (pInputStr == NULL || lInputLen <= 1){return;}const char *p = pInputStr;while(*p != '\\0'){if (g_flag[(*p - 'a')]){p++;}else{pOutputStr[i++] = *p;g_flag[*p - 'a'] = 1;p++;}}pOutputStr[i] = '\\0';}int main(){memset(g_flag,0,sizeof(g_flag));char input[] = "abacacde";char *output = new char[strlen(input) + 1];stringFilter(input,strlen(input),output);cout<<output<<endl;< bdsfid="105" p=""></output<<endl;<>delete output;return 0;2.通过键盘输入一串小写字母(a~z)组成的字符串。
华为最新算法面试题目(3篇)
第1篇一、题目背景随着信息技术的飞速发展,华为作为全球领先的通信设备供应商,对于算法工程师的要求越来越高。
为了选拔出优秀的人才,华为在面试过程中设置了多轮技术面试,其中算法面试是考察应聘者逻辑思维能力、编程能力和问题解决能力的重要环节。
以下将详细介绍华为最新算法面试题目,帮助广大求职者更好地准备面试。
一、题目一:最大数组和【题目描述】给定一个整数数组,找出一个连续子数组,使其和最大。
返回这个最大和。
【输入】输入为一个整数数组,例如:[-2,1,-3,4,-1,2,1,-5,4]【输出】输出最大连续子数组的和,例如:6【思路】1. 贪心算法:从左到右遍历数组,维护一个变量currentSum,用于记录当前子数组的和。
如果currentSum小于0,则丢弃之前的元素,重新开始计算。
最大和maxSum用于记录遍历过程中遇到的最大和。
2. 动态规划:定义一个数组dp[i],表示以第i个元素结尾的连续子数组的最大和。
dp[i]的值可以通过dp[i-1]与当前元素x的较大值来确定,即dp[i] =max(dp[i-1]+x, x)。
【示例代码】```pythondef maxSubArray(nums):if not nums:return 0currentSum, maxSum = nums[0], nums[0]for x in nums[1:]:currentSum = max(currentSum + x, x)maxSum = max(maxSum, currentSum)return maxSum```二、题目二:换零钱【题目描述】给定一个整数数组arr和一个整数aim,其中arr中的元素表示可用的零钱面额,aim表示需要凑齐的金额。
请找出最少数量的零钱,使得可以凑齐aim元。
【输入】输入为两个整数数组,例如:arr = [1, 2, 5],aim = 11【输出】输出最少数量的零钱,例如:3【思路】1. 动态规划:定义一个数组dp[i],表示凑齐i元需要的最少硬币数。
华为c 笔试题及答案
华为c 笔试题及答案华为C笔试题及答案一、简介华为C是华为公司面向应届大学生的笔试选拔考试,旨在评估应聘者的综合素质和潜力。
本文将介绍华为C笔试题目及答案,帮助应聘者更好地准备华为C笔试。
二、题目及答案1. C语言基础题目:请编写一个程序,输出1-100之间的所有偶数。
答案:#include <stdio.h>int main() {int i;for(i=1; i<=100; i++) {if(i%2 == 0) {printf("%d ", i);}}return 0;}2. 数据结构与算法题目:请说明哈希表的原理及其应用场景。
答案:哈希表是一种根据关键字直接访问内存地址的数据结构。
其原理是通过哈希函数将关键字转换为一个索引值,然后将数据存储在对应索引值的位置上。
哈希表的应用场景包括缓存系统、数据库索引、字典等。
3. 计算机网络题目:请解释TCP和UDP协议的区别及其适用场景。
答案:TCP和UDP都是传输层的协议,但有一些区别。
TCP是面向连接的可靠传输协议,能够保证数据的完整性和顺序,适用于需要可靠传输的场景,如文件传输。
UDP是无连接的不可靠传输协议,不保证数据的完整性和顺序,适用于实时性要求较高的场景,如音视频传输。
4. 数据库题目:请解释事务的概念,并说明ACID原则。
答案:事务是数据库操作的最小单位,是一组对数据库进行的操作。
ACID是事务的四个基本属性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),保证事务的可靠性和稳定性。
5. 操作系统题目:请解释什么是进程和线程,并说明它们的区别。
答案:进程是操作系统进行资源分配和调度的最小单位,是程序在执行过程中的一个实例。
线程是进程中的一条执行路径,是CPU调度的最小单位。
进程之间相互独立,拥有独立的地址空间,而线程共享同一地址空间。
华为算法面试经典题目,各种字符串操作算法,快来收藏
华为算法面试经典题目,各种字符串操作算法,快来收藏华为华为题目一:字符串个数统计字符串个数统计一个很常用的算法。
在字符串操作算法中,属于一个比较简单一些的算法题。
但是如果进行扩展的话,还是可以难倒一大部分人的。
下面开始看题目。
题目:编写一个函数,计算字符串中含有的不同字符的个数。
字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。
不在范围内的不作统计。
算法的Java实现代码如下所示:字符串个数统计题目二:字符串反转字符串翻转其实类似于入栈出栈的过程,后进先出。
因此实现时,可以考虑用栈来实现。
题目:写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
(字符串长度不超过1000)。
下面我们写出该问题的Java代码实现方式,如下图:字符串反转题目三:句子逆序句子逆序和字符串翻转还是有一定的区别的,不过原理大致相同。
也可以采取入栈出栈的方式。
只不过句子是以单词为单位。
题目:将一个英文语句以单词为单位逆序排放。
例如“I am a boy”,逆序排放后为“boy a am I”。
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。
该问题的Java代码实现如下:句子逆序题目四:字符串的连接最长路径查询这个题目看上去是不是感觉很难的样子?其实不难哦,下面给出一道题目你就知道了。
题目:给定n个字符串,请对n个字符串按照字典序排列。
输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:数据输出n行,输出结果为按照字典序排列的字符串。
本道题目的Java代码实现方式如下图:字符串的连接最长路径查询题目五:合并表记录这是今天分享的最有难度的一道题目了。
也是今天分享的最后一道题目。
题目:数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
华为面试笔试题算法工程师(机器学习)
一、二面问题汇总:
自我介绍;
非CS专业为什么做机器学习(我记得有本书上说机器学习产生于控制学科...);
看成绩单,因为我们学校信息学院分院之前自动化和计算机课程几乎相同,所以面试官比较满意;
与岗位相关的课程介绍;
分类器了解哪些,自己写过哪些;
熟悉的语言,用过哪些框架;
最熟悉哪个分类模型;
项目介绍;
项目中用到的算法详细;
树模型和熵介绍,为什么xgboost效果好;
除了课程外读了哪些书和视频公开课;
线性回归解析解的推导(三种方法),SVD与PCA的关系;
深度学习的适用场景;
深度学习与传统方法的区别,深度学习为什么效果这么好;
熟悉数据结构与算法吗;
贪婪在机器学习中有哪些应用;
想在哪个城市,为什么,为什么不去**城市;
面试了哪些公司,有哪些offer;
为什么去面试这些公司,找工作看重哪些方面;
有什么问题。
传说中的华为面试题(8分钟写出代码)
传说中的华为⾯试题(8分钟写出代码) 这个题⽬是在⽹上看到了,题⽬描述如下:有两个数组a,b,⼤⼩都为n,数组元素的值任意,⽆序。
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最⼩。
不知道是否真的出⾃华为,但题⽬难度很⼤,以我的⽔平8分钟确实⽆法写出完整的代码,查阅⽹上的⽜⼈的思路,理解整理如下:1. 对两个数字值进⾏累加,设差值 A = sum(a) - sum(b)2. a的第i个元素和b的第j个元素交换后,a和b的和之差为:A' = sum(a) - a[i] + b[j] - (sum(b) - b[j] + a[i]) = sum(a) - sum(b) - 2 (a[i] - b[j]) = A - 2 (a[i] - b[j])3. 设x = a[i] - b[j],带⼊上式得,|A| - |A'| = |A| - |A-2x|4. 假设A > 0,当x 在 (0,A)之间时,做这样的交换才能使得交换后的a和b的和之差变⼩,x越接近A/2效果越好,如果找不到在(0,A)之间的x,则当前的a和b就是答案。
算法描述为:将a、b两个数组看出天平两端,各⾃寻找使得x在(0,A)之间并且最接近A/2的i和j,交换相应的i和j元素,重新计算A后,重复前⾯的步骤直⾄找不到(0,A)之间的x为⽌。
根据算法描述实现代码:1int SwapArray(int *a, int *b, int n)2 {3int nSumA=0, nSumB=0; //分别记录两个数组的和4int nSumDiff=0, nNumDiff=0; //nSumDiff表⽰每轮数组和的差值,nNumDiff表⽰每轮数组各选两数之差56float dHalfDiffSum=0.0f, dClose2SumDiff=0.0f; //dHalfDiffSum表⽰nSumDiff/2, dClose2SumDiff表⽰每轮最接近dHalfDiffSum的数78int nIndexI=0, nIndexJ=0;9bool bDesc=false, bSwitch=false; //bDesc为true表⽰ nSumA > nSumB,bSiwtch为true表⽰ nNumDiff < nSumDiff,此轮⽆需交换1011int i=0, j=0;12while(1)13 {14for(i=0; i!=n; i++)15 {16 nSumA += a[i];17 nSumB += b[i];18 }19 nSumDiff = nSumA - nSumB;20 dHalfDiffSum = (float)nSumDiff/2;21 dClose2SumDiff = dHalfDiffSum;22 bDesc = nSumA >= nSumB? true : false;23if(bDesc)24 {25for(i=0; i!=n; i++)26for(j=0; j!=n; j++)27 {28 nNumDiff = a[i]-b[j];29 cout<<__LINE__<<" nSumDiff = "<<nSumDiff<<" dHalfDiffSum = "<<dHalfDiffSum<<""<<"dClose2SumDiff = "<<dClose2SumDiff<<""<<"nNumDiff = "<<nNumDiff<<endl;30//当在SumA>SumB时,考虑满⾜交换的条件:1. a[i]<b[j]此时交换只会使SumA更⼤于SumB,使得SumA-SumB>nSumDiff 2. a[i]-b[j]>SumA-Sumb此时交换同样使得|SumA-SumB|>nSumDiff,这两者条件下都会使两 31if(nNumDiff > 0 && nNumDiff < nSumDiff)32 {33if(nNumDiff >= dHalfDiffSum)34 {35if(nNumDiff - dHalfDiffSum < dClose2SumDiff)36 {37 bSwitch = true;38 dClose2SumDiff = nNumDiff- dHalfDiffSum;39 nIndexI = i;40 nIndexJ = j;41 cout<<__LINE__<<" nIndexI = "<<nIndexI<<" nIndexJ = "<<nIndexJ<<" dClose2SumDiff = "<<dClose2SumDiff<<endl;42 }43 }44else45 {46if(dHalfDiffSum - nNumDiff < dClose2SumDiff)47 {48 bSwitch = true;49 dClose2SumDiff = dHalfDiffSum - nNumDiff;50 nIndexI = i;51 nIndexJ = j;52 cout<<__LINE__<<" nIndexI = "<<nIndexI<<" nIndexJ = "<<nIndexJ<<" dClose2SumDiff = "<<dClose2SumDiff<<endl;53 }54 }55 }56 }57 }58else59 {60for(i=0; i!=n; i++)61for(j=0; j!=n; j++)62 {63 nNumDiff = a[i]-b[j];64 cout<<__LINE__<<" nSumDiff = "<<nSumDiff<<" dHalfDiffSum = "<<dHalfDiffSum<<""<<"dClose2SumDiff = "<<dClose2SumDiff<<""<<"nNumDiff = "<<nNumDiff<<endl;65if(nNumDiff < 0 && nNumDiff < nSumDiff)66 {67if(nNumDiff > dHalfDiffSum)68 {69if(nNumDiff - dHalfDiffSum < dClose2SumDiff)70 {71 bSwitch = true;72 dClose2SumDiff = nNumDiff-dHalfDiffSum;73 nIndexI = i;74 nIndexJ = j;75 cout<<__LINE__<<" nIndexI = "<<nIndexI<<" nIndexJ = "<<nIndexJ<<" dClose2SumDiff = "<<dClose2SumDiff<<endl;76 }77 }78else79 {80if(dHalfDiffSum - nNumDiff < dClose2SumDiff)81 {82 bSwitch = true;83 dClose2SumDiff = dHalfDiffSum-nNumDiff;84 nIndexI = i;85 nIndexJ = j;86 cout<<__LINE__<<" nIndexI = "<<nIndexI<<" nIndexJ = "<<nIndexJ<<" dClose2SumDiff = "<<dClose2SumDiff<<endl;87 }88 }89 }90 }91 }9293if(!bSwitch)94break;9596 swap(a[nIndexI], b[nIndexJ]);9798for(i=0; i!=n; i++)99 cout<<a[i]<<"";100 cout<<endl;101102for(i=0; i!=n; i++)103 cout<<b[i]<<"";104 cout<<endl;105106 nSumA = nSumB =0;107 bDesc = bSwitch = false;108 }109110return0;111 }112113int _tmain(int argc, _TCHAR* argv[]) 114 {115int a[] = {5, 10,22};116int b[] = {1, 4, 3};117118 SwapArray(a, b, 3);119120return0;121 }。
华为算法岗笔试题
华为算法岗笔试题已助力150+人进入国内大厂的《人工智能算法岗江湖武林秘籍》,45家大厂面经秘籍及参考答案:华为面经目录1 华为面经汇总资料2 华为面经涉及基础知识点3 华为面经涉及项目知识点4 数据结构与算法分析相关知识点5 编程高频问题:Python&C、C++方面6 操作系统高频问题:数据库&线程等7 技术&产品&开放性问题1华为面经汇总资料1、1面经汇总参考资料①参考资料:(1)牛客网:华为面经-172篇,(2)知乎面经:(3)面试圈:②面经框架&答案&目录&心得:(1)面经框架及参考答案:(2)大厂目录及整理心得:1、2面经涉及招聘岗位(1)实习岗位类【华为云EI实习岗】、【计算机视觉实习生】、【华为杭研院Cloud&AI昇腾计算产品部算法实习】(2)全职岗位类1、3面试流程时间安排PS:以上流程为大白总结归纳所得,以供参考。
其他注意点:●有些人在第一面之前,还会有机试和性格测试●有些区域是技术面+机试性格测试+三面BOSS面●有些人是先综合面,再HR面1、4华为面经面试心得汇总★华为特别重视底层原理,和其他互联网公司不一样。
★华为的面试看面试官吧!有的人会被很多技术的,有的只是聊聊人生和项目。
★总结一下三场面试,需要准备好编程相关的问题,机器学习相关的问题,自己方向最新的技术。
另外,三场面试都着重问了项目,可能我比较菜,没有发过论文。
自己对项目的细节一定要十分了解,这样就不用慌了,随便问都能答上来。
★每个区域的招聘流程稍微有点差异,不过一般分为基础面试、综合面试:基础面试基本就是聊项目经历或者实习经历,另外有些会从产品的角度出发,出一些发散性思维的题目,不怎么为难你,主要问项目经历综合面试主要谈性格、对华为的认识、为什么想加入华为;主要看重承担压力的能力,表现的性格开朗就Okay了。
★有的时候,面试很难,有的时候很简单,所以还是看人,但是最好认真准备,以不变应万变。
华为算法面试题及答案
华为算法面试题及答案1. 题目:二分查找算法问题描述:给定一个升序排列的整数数组 nums,和一个目标值target。
写一个函数搜索 nums 中的 target,如果找到了 target,则返回它的索引;如果未找到,则返回-1。
答案:使用二分查找算法,首先定义两个指针 left 和 right,分别指向数组的起始位置和结束位置。
然后进入循环,计算中间位置mid = (left + right) / 2。
比较 nums[mid] 和 target 的大小:- 如果 nums[mid] == target,则返回 mid;- 如果 nums[mid] < target,则将 left 更新为 mid + 1;- 如果 nums[mid] > target,则将 right 更新为 mid - 1。
循环继续,直到 left > right 为止,此时如果未找到 target,则返回 -1。
2. 题目:链表中环的检测问题描述:一个链表中包含一个环,请编写一个函数来检测这个环。
答案:使用快慢指针法。
首先初始化两个指针 slow 和 fast,slow 每次移动一步,fast 每次移动两步。
如果链表中存在环,则fast 指针最终会追上 slow 指针。
如果 fast 指针到达链表末尾,说明链表无环。
3. 题目:最大子数组和问题描述:给定一个整数数组 nums,找出一个具有最大和的子数组,返回这个和。
答案:使用 Kadane 算法。
初始化两个变量 maxSoFar 和maxEndingHere,都设置为 nums[0]。
遍历数组,对于每个元素nums[i]:- 更新 maxEndingHere = max(nums[i], maxEndingHere +nums[i]);- 更新 maxSoFar = max(maxSoFar, maxEndingHere)。
遍历结束后,maxSoFar 就是最大子数组和。
华为od前端算法题
华为od前端算法题
华为一面前端算法题一般来说会考察基础的数据结构和算法,下面给出一些可能的题目示例:
1. 反转字符串:实现一个函数,将输入的字符串反转过来。
2. 字符串中的第一个唯一字符:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。
如果不存在,则返回 -1。
3. 数组中的两个数相加:给定一个整数数组 nums 和一个目标值 target,在数组中找出和为目标值的两个整数,并返回它们的索引。
假设每个输入只对应一种答案,且同样的元素不能被重复利用。
4. 二叉树的最大深度:给定一个二叉树,找出其最大深度。
5. 实现一个队列:使用数组或链表等数据结构实现一个队列,使其具有入队、出队、获取队列长度等基本操作。
以上只是一些可能的题目示例,华为的面试题目会有一定的变化,考察的内容也可能有所不同。
在面试过程中,如果遇到不会的题目,可以向面试官提问,和面试官进行交流,尽力展现自己的思考和解决问题的能力。
华为笔试算法题解
华为笔试算法题解华为笔试算法题解第1题字符串处理思路:先过滤掉数字,然后按GBK编码扫描汉字的长度,若为偶则⼦串长度length-cnt/2,若为奇则⼦串长度length-(cnt/2+1)(GBK编码汉字为2字节,数值⼩于0)import java.io.UnsupportedEncodingException;import java.util.Scanner;/**** 在GBK编码下,请编写⼀个截取字符串的函数,输⼊为⼀个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,* 同时忽略字符串中的数字后输出最终结果。
** 输⼊描述:** ⼀⾏字符串和待截取的字节数** 输出描述:** 单独的⼀⾏截取后的字符串** ⽰例1** 输⼊** 华HUA* 4** 输出** 华HU** 备注:** 要保证汉字不被截半个,同时忽略字符串中的数字后输出最终结果。
*/public class Str {static String splitString(String str,int length){try {byte[] bytes = str.getBytes("GBK");int cnt=0;for(byte x:bytes){if(x<0) cnt++;}if(cnt%2==0) return str.substring(0,length-cnt/2);else return str.substring(0,length-cnt/2-1);}catch (UnsupportedEncodingException e){e.printStackTrace();}return null;}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);while(scanner.hasNext()){String str=scanner.nextLine();int length=scanner.nextInt();String str1=str.replaceAll("\\d","");String ans=splitString(str1,length);System.out.println(ans);}scanner.close();}}第2题⽇期利⽤Calendar类处理,注意⽉份从0开始,星期从周⽇开始import java.util.Calendar;import java.util.Scanner;/**** 13号⼜恰好是星期五真的很特殊吗?也就是说,13号出现在星期五的⼏率⽐出现在其它周⽇的⼏率⼤吗?要回答这个问题,** 写⼀个程序计算13⽇出现在某个星期的次数(在给定的N年时间中)。
华为c 笔试题及答案
华为c 笔试题及答案华为C笔试题及答案华为C作为世界知名的通信设备制造商,其笔试题对于求职者来说具有一定的难度。
在华为C的笔试中,通常会涉及到技术细节、算法设计、编程能力等方面的考察。
下面我将为大家提供一些华为C笔试题及其答案,希望对大家的求职准备有所帮助。
1. 请使用C语言实现一个二叉树的前序遍历算法。
答案:```c#include <stdio.h>#include <stdlib.h>typedef struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;} TreeNode;void preorderTraversal(TreeNode* root) {if(root == NULL) {return;}printf("%d ", root->val); // 输出当前节点的值preorderTraversal(root->left); // 递归遍历左子树preorderTraversal(root->right); // 递归遍历右子树}int main() {// 构造一个二叉树TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode)); root->val = 1;root->left = (TreeNode*)malloc(sizeof(TreeNode));root->left->val = 2;root->left->left = NULL;root->left->right = (TreeNode*)malloc(sizeof(TreeNode)); root->left->right->val = 3;root->left->right->left = NULL;root->left->right->right = NULL;root->right = (TreeNode*)malloc(sizeof(TreeNode));root->right->val = 4;root->right->left = NULL;root->right->right = NULL;// 调用前序遍历算法printf("前序遍历结果为:");preorderTraversal(root);return 0;}```2. 请使用C语言实现一个快速排序算法。
精彩试题梳理!华为技术招聘笔试题解析(下)
精彩试题梳理!华为技术招聘笔试题解析(下)2023年了,新一轮的华为技术招聘已经在全国范围内展开,而笔试则是考核每一位应聘者技能的重要一环。
下面,我们将为大家带来精彩试题梳理,对华为技术招聘笔试题进行解析,希望对各位应聘者有所帮助。
一、计算机基础1. 哪些寄存器在函数调用时会发生改变?答:在函数调用期间,程序计数器(PC)和堆栈指针(SP)寄存器的值发生了变化。
2. 假设在 32 位系统上,sizeof(int)=4 sizeof(char)=1,请问运行以下代码段后,a和b占用的字节数分别是多少?```c++char a = 'a';int b = 1;```答:a占用1个字节,b占用4个字节。
3. 常见的压缩算法有哪些?答:常见的压缩算法有哈夫曼编码、LZ77算法、LZ78算法和LZW 算法等。
二、数据结构与算法1. 有一个长度为n的无序整型数组,如何对其进行排序?答:可以使用冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等算法对其进行排序。
2. 什么是哈希表?在解决什么问题上有很好的应用?答:哈希表是一种利用哈希函数和数组结构来实现的数据结构。
它能够在常数时间内完成元素的插入、删除和查找操作,因此也被称为散列表。
哈希表最适用于查找的应用场景,比如字典、电话簿等。
3. 请给出二叉树的深度遍历算法。
答:```c++class TreeNode {public:int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {} };void preOrder(TreeNode *root) {if (root == NULL) return;cout << root->val << " ";preOrder(root->left);preOrder(root->right);}void inOrder(TreeNode *root) {if (root == NULL) return;inOrder(root->left);cout << root->val << " ";inOrder(root->right);}void postOrder(TreeNode *root) {if (root == NULL) return;postOrder(root->left);postOrder(root->right);cout << root->val << " ";}```三、操作系统1. 什么是进程、线程?答:进程是操作系统资源分配的基本单位,是一个执行中的程序,有独立的内存空间和系统资源。
华为笔试题及答案
华为笔试题及答案一、选择题1. 下列哪种编程范式主要关注程序的计算过程和程序状态的变化?A. 面向对象编程B. 函数式编程C. 命令式编程D. 声明式编程答案:C解析:命令式编程是一种编程范式,主要关注程序的计算过程和程序状态的变化。
与之相对的是声明式编程,它更关注程序的结果而非过程。
2. 下列哪种排序算法的时间复杂度是O(nlog n)?A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序答案:B解析:快速排序的平均时间复杂度为O(nlog n),而冒泡排序、选择排序和插入排序的时间复杂度都是O(n^2)。
二、填空题3. 在计算机科学中,二叉树中的节点个数n与边数e的关系为______。
答案:e = n - 1解析:在二叉树中,每个节点都有两个子节点(可能为空),因此节点数n与边数e之间的关系为e = n - 1。
4. 一个具有1024个节点的完全二叉树,其深度为______。
答案:10解析:完全二叉树的深度可以通过以下公式计算:深度 = log2(节点数) + 1。
对于1024个节点的完全二叉树,深度为log2(1024) + 1 = 10 + 1 = 11。
三、算法题5. 编写一个C++程序,实现一个函数,该函数接收一个整数数组和一个目标值,返回数组中和为目标值的两个数的索引。
答案:```cpp#include <iostream>#include <vector>#include <unordered_map>std::vector<int> twoSum(const std::vector<int>& nums, int target) {std::unordered_map<int, int> hash_map;for (int i = 0; i < nums.size(); ++i) {int complement = target - nums[i];if (hash_map.find(complement) !=hash_map.end()) {return {hash_map[complement], i};}hash_map[nums[i]] = i;}return {};}int main() {std::vector<int> nums = {2, 7, 11, 15};int target = 9;std::vector<int> result = twoSum(nums, target);std::cout << "Indices are: " << result[0] << " and " << result[1] << std::endl;return 0;}```解析:本题考查哈希表的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杭州现场面
第一轮业务面:
1. 自我介绍
2. 挑2 个最能展现技术能力的项目细讲
3. 听不懂,我不是做算法的,你再想想怎么给我讲。
4. 用什么语言
5. 有没有什么问我的
问了面试官的工作背景,是做os 的。
面试官专业水平应该很高,气场很足。
不过头一次遇上这么玄学的面试,还是有点纠结。
第二轮业务面:
似乎一般就一轮业务面,不知道怎么加了一轮。
这次这个面试官好像会算法了。
全程聊项目,没有什么好讲的
第一轮综合面:
1. 自我介绍
2. 对ai 趋势的看法
3. 怎样的代码才是好代码(可读性,复用性,效率?)
4. 职业规划
然后面试官跟另一位面试官聊了一下,说我这轮给你跳过了,给你推总裁那。
(内心:跳过?-_-)
第一天没面完,第二天接着面orz...
第二轮综合面
1. (没有自我介绍。
)你不是科班的,为啥要搞算法?国家学科划分这么明确,你觉得这样跨行真的好么。
(orz...其实当初转行,也有想着做好算法,今后工业发展好了,用算法去建设来着。
)
2. 对你研究领域的前沿算法的了解。
有哪些企业/高校水平高
3. 你是不是在重复造轮子,你的模型有没有真的提升(这个可以有。
)
4. 华为对ai 的理解可能跟你们很多同学不一样,我们要做伟大的事情,万亿级的优化,比头条的推荐/百度的nlp...这种商业的东西,要伟大一些。
(这个我觉得是视角的问题吧,求同存异了。
)
5. 说句不好听的,你们blabla(不好听的就不写了,emmm,确实不好听)
6. 有没有什么问我的(我又问他是负责什么的,想找点话聊)。
大佬回复:我没有具体负责的业务(真的是大佬啊...应该在负责华为整体布局的事情吧)。