为您推荐:
精华内容
最热下载
问答
  • 5星
    1.31MB u010575833 2021-10-10 15:04:17
  • 5星
    578.92MB goodxianping 2021-07-26 13:35:05
  • 5星
    25MB u010575833 2021-08-28 16:07:13
  • 5星
    53.53MB u010800804 2021-08-08 17:24:48
  • 5星
    24.58MB moonfire94 2021-03-26 15:39:13
  • 5星
    14.36MB weixin_42535005 2021-07-21 21:52:32
  • 5星
    1.31MB qq_40957277 2021-07-25 07:32:59
  • 5星
    46KB qq_41934573 2021-04-25 14:50:41
  • 5星
    1.3MB qq_40957277 2021-06-24 14:00:04
  • 5星
    478KB weixin_46395217 2021-08-13 16:10:38
  • 今天小编想要给大家介绍一条脚踩技面、手撕HR、月入十万、迎娶白富美、登上人生巅峰的捷径:当当当当~——“华为软件精英挑战赛”;武汉长沙赛区因为名校众多,已经成为了最激烈的竞争赛区。来一起回顾一下之前的...

    人生艰难,不仅仅在于我们要经历成长过程中的种种磨砺,而更要经受一些迫不得已的离别之苦。于家人,为了求学、工作,我们背井离乡,从此乡人再也没能喝上一口井水。于爱人,情侣间一个简单的拥抱,都因为异地而变得更加来之不易。

    但是,这一切终会有一个简单的理由支撑着我们勇往直前:为了你生命中最在乎的人而努力变好。

    如果可以,请放下手中无聊、无谓、无奈、无趣的事情,对他们说句:我爱你!

    而最让我眼中常含满泪水的,是我知道你们有一个算法不会。

    今天小编想要给大家介绍一条脚踩技面、手撕HR、月入十万、迎娶白富美、登上人生巅峰的捷径:当当当当~——“华为软件精英挑战赛”;武汉长沙赛区因为名校众多,已经成为了最激烈的竞争赛区。来一起回顾一下之前的2017年的大赛题。

    一、奖项设置

    一等奖,1队,奖金¥20万、奖杯和证书;面试绿卡、实习offer等优才计划;

    二等奖,2队,每队奖金¥10万、奖杯和证书;面试绿卡、实习offer等优才计划;

    三等奖,5队,每队奖金¥5万、奖杯和证书;面试绿卡、实习offer等优才计划;

    最优美代码奖,1队,每队奖金¥1万、奖杯和证书;面试绿卡、实习offer等优才计划;

    二、比赛问题定义

    背景:大视频解决方案中,视频业务体验非常关键,视频内容如何有效传送到最终消费者是决定视频体验好坏的核心环节。

    本次赛题基本描述

    在给定结构的G省电信网络中,为了视频内容快速低成本的传送到每个住户小区,需要在这个给定网络结构中选择一些网络节点附近放置视频内容存储服务器。需要解决的问题是:在满足所有的住户小区视频播放需求的基本前提下,如何选择视频内容存储服务器放置位置,使得成本最小。

    本次赛题通用性描述

    网络结构模型:给定一个由若干网络节点(例如路由器、交换机)构成的网络结构无向图,每个节点至少与另外一个节点通过网络链路相连(网络链路特指两个网络节点之间直接相连的网络通路,中间没有其他网络节点,相当于无向图中的一条边),一个节点可以将收到的数据通过网络链路传输给相连的另一个节点。每条链路的网络总带宽不同(例如某条链路的总带宽为10Gbps)。而每条链路承载的视频传输需要按照占用带宽的多少收取对应网络租用费,每条链路的单位租用费均不同(例如某条链路的租用费为1,000元/Gbps,即1K/Gbps)。某条链路上被占用的带宽总和不得超过该链路的总带宽。

    消费节点:给定的网络结构中有部分网络节点直接连接到小区住户的网络,每个小区住户网络在这个给定的网络结构图中呈现为一个消费节点,不同消费节点的视频带宽消耗需求不同。

    视频内容服务器:视频内容服务器存放视频内容(如:电影影片、电视剧等),视频内容服务器的视频数据流可以经由网络节点与链路构成的网络路径流向消费节点,视频内容服务器的输出能力没有上限,可以服务多个消费节点,一个消费节点也可以同时从多台视频内容服务器获取视频流。部署一台视频内容服务器需要费用成本(例如300,000元/台,即300K/台),所有服务器的成本均相同。

    比赛程序内容:请你设计一个程序寻找最优的视频内容服务器部署方案:从网络结构模型中选择一部分网络节点,在其上/附近一对一的部署视频内容服务器,视频内容服务器与对应的这个节点直连,与对应的这个网络节点之间的通信没有带宽限制、也没有通信成本。提供的部署方案需要使得视频流从视频内容服务器经过一些网络节点和链路到达消费节点,并满足所有消费节点的视频带宽消耗需求。

    在满足所有消费节点视频带宽消耗需求的前提下,使得耗费的总成本(视频内容服务器部署成本+带宽租用成本)最低。部署方案不仅需要包括部视频内容服务器的节点位置,而且还要包括每个消费节点与所有视频内容服务器之间的网络路径以及路径上占用的带宽。

    比赛胜负规则

    若给定的网络拓扑模型不存在满足条件的方案,则输出无解,程序运行时间越短者胜出。若存在满足条件的方案,则成本越低者胜出。若两个方案的成本相同,则程序运行时间越短者胜出。

    比赛用例示例:

    上图为G省网络拓扑图,黑色圆圈为网络节点,红色圆圈为消费节点,圆圈内的数字为节点编号。节点之间的连线为网络链路。链路上的标记(x, y)中,x表示链路总带宽(单位为Gbps),y表示每Gbps的网络租用费。消费节点相连链路上的数字为消费节点的带宽消耗需求(单位为Gbps)。

    现在假设需要在该网络上部署视频内容服务器,满足所有消费节点的需求。一个成本较低的方案如下图所示,其中绿色圆圈表示已部署的视频内容服务器,通往不同消费节点的网络路径用不同颜色标识,并附带了占用带宽的大小:

    但该方案的成本不一定是最低的。因此现在需要参赛者提供的程序能够针对不同的比赛用例,给出成本最低的部署方案。

    与这个题目非常相近的是“基站选址”问题。

    【题目分析】

    一条直线上给定相对距离Di(距第一个村庄的距离)的N个村庄中建K个基站,每个村庄i接收的范围为前后Si,建基站费用Ci,一个村庄要么被接受到要么额外支付Wi。设计方案求最小总费用。

    【算法分析】

    朴素方程为f[i]j=MIN(f[k][j-1]+Wk+1…j).W预处理需要N3时间,DP需要N2*K的时间。显然需要优化。

    其实这样一个“裸”的方程看起来似乎很难再在时间上优化下去,因为该算法的瓶颈在于预处理的“复杂”(预处理涉及到题中的C、S、W)。这时,我们就需要对方程进行改变,让其显得更加“简洁”。f[i]j=MIN(f[k][j-1]+W[k+1…j](k+1…j中k和i都覆盖不到的村庄的W和)+Ci。Ci为常数,DP又可以滚动优化,所以方程实际上要干的事就是f[i]=MIN(f[k]+W[k+1…j])。为了计算方便,我们可以再在最后面设一个村庄n+1,k增加1,令d[n+1]=INF。那么基站数量一定下,最优解就是f[n]。

    显然现在我们对于每个村庄,都可以在O(logn)的时间内二分查找出它向前向后最多能覆盖到的地方,这个预处理在后面的分析中会用到。

    我们进一步分析W[k+1…j]的计算。显然一个村庄p覆盖不到的条件是同时满足Dp+Sp<Di,Dp-Sp>Dk.现在我们假设有一个k,一个i,考虑覆盖到的村庄。

    我们现在假设k不变,i增大1,那么会发生什么变化?很显然,原本被k覆盖到的村庄还是被覆盖的,但被i覆盖到的村庄左边一部分没有被覆盖了,也就意味着这些村庄需要另外给付钱了!回到那个条件,我们发现这便是Di单调递增使得一些原本覆盖到的村庄p覆盖不到了!如果我们已知W[k+1…i],怎么求出W[k+1…i+1]?很显然的,加上新增的村庄的W即可。

    当然,事情还没那么简单,由于我们DP时是固定i求一个k使解最小,自然而然我们可以初步想到一个思路用线段树维护每个f[k]+W[k+1…j]的值,“新增的村庄”打个标记加上去就行。

    算法流程:

    1.读入,预处理每个村庄向前向后最多能覆盖到的地方记为st[i],ed[i]

    2.循环j=1…k表示当前建第几个村庄

    3.利用上次的f(即每个点的初值)建线段树

    4.清空旧的f

    5.循环i=1…n

    6.查找线段树中0…i-1里f的最小值

    7.最小值+Ci后赋值给f[i]

    8.对于i,若ed[x]=i,则在线段树中0…st[x]-1集体加上Wx

    (原因:考虑每个x(满足ed[x]=i,具体实现可用链表(数组模拟)),这样做是为 了对于i后面的村庄如果选定村庄k,且x够不到(x原本刚刚好能被i覆盖), 那么这个k的f[k]就要加上Wx了。)

    9.用当前的f[n]更新最优解

    10.输出最优解

    时间复杂度O(knlogn)

    空间复杂度O(n)

    【总结】

    DP优化,突破口就是利用了Di单调递增的性质,并合理使用数据结构加以优化。

    【吐槽】

    算法分析第二段及之后均为看题解后总结得来。

    【附程序】

    #include<cstdio>
    #include<cstring>
    #define rep(i,x,y) for(i=x;i<=y;i++)
    #define rep_(i,x,y) for(i=x;i>=y;i--)
    #define MIN(x,y) ((x)<(y)?(x):(y))
    #define MAX(x,y) ((x)>(y)?(x):(y))
    using namespace std;
    const int INF=~0U>>2;
    const int MAXN=20010;
    const int MAXK=102;
    typedef int arr[MAXN];
    int n,k,i,j,pos,ans,min0,en0;
    arr d,c,s,w,f,st,ed;
     
    struct tree
    {
        int min[1<<16],en[1<<16];
        void pdown(int i)
        {
            en[i<<1]+=en[i];min[i<<1]+=en[i];
            en[(i<<1)+1]+=en[i];min[(i<<1)+1]+=en[i];
            en[i]=0;
        }
        void pup(int i)
        {
            min[i]=MIN(min[i<<1],min[(i<<1)+1]);
        }
        void build(int i,int x,int y)
        {
            en[i]=0;
            if(x!=y)
            {
                build(i<<1,x,(x+y)>>1);
                build((i<<1)+1,((x+y)>>1)+1,y);
                pup(i);
            }
            else min[i]=f[x];
        }
        void find(int i,int x,int y,int l,int r,int kind)
        {
            if(x>y)return;
            if(l>y || r<x)return;
            if(x>=l && y<=r)
            {
                switch(kind)
                {
                    case 1: //查找最小值 
                        min0=MIN(min0,min[i]);
                        break;
                    case 2: //加上一个值 
                        en[i]+=en0;min[i]+=en0;
                        break;
                }
            }
            else
            {
                pdown(i);
                find(i<<1,x,(x+y)>>1,l,r,kind);
                find((i<<1)+1,((x+y)>>1)+1,y,l,r,kind);
                pup(i);
            }
        }
    }a;
     
    struct biao
    {
        int edge;
        arr e,b,first,last,w;
        void clean()
        {
            edge=0;
            memset(first,-1,sizeof(first));
            memset(b,-1,sizeof(b));
        }
        void add(int x,int y,int z)
        {
            e[edge]=y;w[edge]=z;
            if(first[x]==-1)first[x]=edge;
            else b[last[x]]=edge;
            last[x]=edge++;
        }
    }q;
     
    int findl(int x)
    {
        int l,r;
        for(l=1,r=n;l<r;)
        {
            if(x<=d[(l+r)>>1])r=(l+r)>>1;
            else l=((l+r)>>1)+1;
        }
        return l;
    }
    int findr(int x)
    {
        int l,r;
        for(l=1,r=n;l<r;)
        {
            if(x>=d[(l+r+1)>>1])l=(l+r+1)>>1;
            else r=((l+r+1)>>1)-1;
        }
        return l;
    }
    int main()
    {
        freopen("base.in","r",stdin);
        freopen("base.out","w",stdout);
        scanf("%d%d",&n,&k);
        rep(i,2,n)scanf("%d",&d[i]);
        rep(i,1,n)scanf("%d",&c[i]);
        rep(i,1,n)scanf("%d",&s[i]);
        rep(i,1,n)scanf("%d",&w[i]);
        n++;d[n]=INF;k++;
        q.clean();
        rep(i,1,n)
        {
            st[i]=findl(d[i]-s[i]);
            ed[i]=findr(d[i]+s[i]);
            q.add(ed[i],st[i]-1,w[i]);
        }
         
        ans=INF;
        f[0]=0;rep(i,1,n)f[i]=INF;
        rep(j,1,k)
        {
            a.build(1,0,n);
            f[0]=0;rep(i,1,n)f[i]=INF;
            rep(i,1,n)
            {
                min0=INF;
                a.find(1,0,n,0,i-1,1);
                f[i]=min0+c[i];
                for(int pos=q.first[i];pos>=0;pos=q.b[pos])
                {
                    en0=q.w[pos];
                    a.find(1,0,n,0,q.e[pos],2);
                }
            }
            ans=MIN(ans,f[n]);     
        }
        printf("%d\n",ans);
         
        scanf("\n");
        return 0;
    }
    

    在这里插入图片描述

    本公众号分享自己从程序员小白到经历春招秋招斩获10几个offer的面试笔试经验,其中包括【Java】、【操作系统】、【计算机网络】、【设计模式】、【数据结构与算法】、【大厂面经】、【数据库】期待你加入!!!

    1.计算机网络----三次握手四次挥手
    2.梦想成真-----项目自我介绍
    3.你们要的设计模式来了
    4.震惊!来看《这份程序员面试手册》!!!
    5.一字一句教你面试“个人简介”
    6.接近30场面试分享
    7.你们要的免费书来了

    展开全文
    weixin_41563161 2021-03-06 21:00:48
  • 点上方蓝字人工智能算法与Python大数据获取更多干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :华为中软院招聘对象国内院校本硕:2021年毕...

    点上方蓝字人工智能算法与Python大数据获取更多干货

    在右上方 ··· 设为星标 ★,第一时间获取资源

    仅做学术分享,如有侵权,联系删除

    转载于 :华为中软院

    招聘对象

    国内院校本硕:2021年毕业的本硕同学

    博士及海外留学生:2020年1月至2021年12月期间毕业的本硕博

    简历投递

    1、登录华为招聘官网career.huawei.com

    2、进入校园招聘专区,选择研发类岗位;

    3、选择您的意向岗位,且第一意向部门选择中央软件院;

    4、提交,并以【简历编号+姓名+岗位】命名邮件知会至HR,邮箱:liruiruili.li@huawei.com


    招聘岗位

    01

    操作系统开发工程师

    软件开发工程师

    请上下滑动阅览

    岗位职责:

    负责Linux操作系统、内核、终端OS、云计算、虚拟化、边缘计算、AI、计算机图形视觉、智能驾驶等下一代OS技术创新研究、原型构建,参与操作系统领域生态链构建,捕捉OS领域最新成果。

    背景要求:

    熟练掌握C/C++/JAVA中一种及以上编程语言;熟悉Linux环境编程,或是研究过相关代码。熟悉Linux系统或内核开发,从事过存储、网络、容器/unikernel、安全等相关的项目开发者优先,具备安卓、物联网、多媒体、边缘计算和人工智能等领域相关经验者优先, 熟悉ARM、 Docker、FPGA/GPU等相关技术者优先。

    工作地点:

    北京、深圳、上海、杭州、南京

    02

    分布式数据库开发工程师

    软件开发工程师

    请上下滑动阅览

    岗位职责:

    负责业界领先的云端到终端各层次内核数据库研发;基于操作系统内核技术构建数据库高性能、高可用等核心竞争力,从事软硬件协同、数据库相关各领域前沿技术研究。

    背景要求:

    1、具有扎实的计算机基础理论知识,并在以下一个或多个方向有实际工程研究经验:数据库内核、工具,分布式并行处理技术、图计算、索引算法、数据压缩算法、人工神经网络、分布式一致性算法、分布式资源调度、事务处理、大数据处理及体系;

    2、熟练掌握Linux、Unix及Solaris等环境下C/C++编程,及进程间通信、内存管理、网络通信等;

    3、熟悉Oracle、DB2、MySQL、PostgreSQL等相关数据库设计、开发、测试、维护、应用及调优者优先;4、在SCI期刊发表一篇以上系统结构、数据库、大数据、算法以及计算机异构处理方向论文优先。

    工作地点:

    北京、深圳、上海、西安、南京

    03

    编译器与编程语言开发工程师

    软件开发工程师

    请上下滑动阅览

    岗位职责:

    加入全球最领先的编译器团队,成为异构编译器、方舟编译器、芯片协同设计、JAVA虚拟机、终端/AI编程语言、软件IDE技术的引领者和开创者,创造性地解决产能和性能的痛点问题:

    1、负责华为各类芯片编译器的开发与优化,自研指令集设计与验证,为AI、5G、终端、终端图形、服务器提供高性能和高能效算力;

    2、负责动态编程语言虚拟机(如JAVA)设计与开发,提升华为服务器、云和IOT业务竞争力;

    3、负责编程语言设计,基于宿主语言设计领域语言DSL,如服务于计算产业的AI编程语言、服务于终端UI设计的声明式UI语言;

    4、面向未来新的业务场景、新的开发模式、新的编程语言,围绕开发者体验和生产效率,持续探索和突破华为自有IDE技术创新,让软件开发更简单更高效更智能。

    背景要求:

    1、有C/C++/Java/JS开发经验、Linux或嵌入式开发经验;

    2、有过IDE及插件开发经验,熟悉程序分析、程序纠错、跨平台编程、AI辅助编程、低代码编程框架(类似于Matlab)、SDK引擎(API生成工具)等前沿技术;

    3、有扎实的编程能力、编程竞赛经历者优先考虑;

    4、了解开源社区并为优质社区(超过3K stars)贡献过代码者优先考虑。

    工作地点:

    杭州、北京、上海、深圳

    04

    云计算开发工程师

    软件开发工程师)

    请上下滑动阅览

    岗位职责:

    面向HMS和智能计算业务,承担高性能网络(终端、公有云、5G以及物联网等)中云网络研究;负责网络虚拟化OVS、容器网络、虚拟交换、虚拟前后端等研究;打造高可靠、高性能、可扩展的具备核心竞争力的分布式与并行软件技术和平台,与全球领域专家一起工作构建华为网络在业界影响力。

    背景要求:

    1、计算机、应用数学等相关专业本科及以上学历;

    2、至少精通一门C/C++等一门主流编程语言;

    3、具备扎实的计算机基础理论,尤其掌握网络L2-L4层协议基础知识;4、 对分布式系统、分布式事务协议、高性能计算、算法研究、操作系统内核编程、网络虚拟化前后端驱动、网络硬件加速和网络安全、软硬件协同、一致性控制/协议、存储管理、数据复制协议等技术掌握者优先。

    工作地点:

    北京、上海、深圳、杭州

    05

    通用软件开发工程师

    软件开发工程师)

    请上下滑动阅览

    岗位职责:

    1、完成从客户需求到软件产品定义、架构设计、开发实现、再到上线运营维护等产品生命周期中的各个环节;

    2、创造性解决产品在实现过程中的技术难题,应用前沿技术提升产品的核心竞争力,如分布式系统、性能调优、可靠性、数据库等;

    3、有机会参与业界前沿技术研究和规划,参与开源社区运作,与全球专家一起工作、交流,构建华为在业界影响力。

    背景要求:

    1、计算机、软件、通信等相关专业本科及以上学历;

    2、热爱编程,基础扎实,熟悉掌握但不限于;

    JAVA/C++/Python/JS/GO/HTML等编程语言中的一种或数种,有良好的编程习惯; 

    3、具备独立工作能力和解决问题的能力、善于沟通,乐于合作,热衷新技术,善于总结分享,喜欢动手实践;  

    4、对数据结构、算法有一定了解; 

    5、优选条件: 

    (1)熟悉TCP/IP协议及互联网常见应用和协议的原理;

    (2)有IT应用软件、互联网软件、IOS/安卓等相关产品开发经验,不满足于课堂所学,在校期间积极参加校内外软件编程大赛或积极参与编程开源社区组织; 

    (3)熟悉HTML5/AS/AJAX/CSS/JS等前端开发技术。

    工作地点:

    北京、深圳、上海、南京、西安、武汉、杭州

    06

    机器学习

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    负责机器学习/深度学习算法研究,构建华为公司自研AI框架、视频、智能与云计算、消费者业务的算法核心竞争力。

    背景要求:

    1、计算机、软件工程、数学等相关专业,硕士以上学历;

    2、有良好的研究背景和成果,对算法研究兴趣浓厚,业务抽象能力强;具备创造性思维,能够将全新想法转化为工程应用;对研究工作充满热情,具备良好的团队合作精神和沟通能力;

    3、具备较强的编程能力,至少精通一种主流编程语言,如C++ /Python/Java等;

    4、在高水平国际会议和学术期刊发表过相关论文,或有高水平竞赛获奖经历。

    工作地点:

    杭州、深圳、北京、上海、南京、西安、武汉

    07

    自然语言处理/语音语义

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    承担智能搜索、问答、对话等智能系统设计、开发、验证、商用落地。负责查询分析、语义理解、排序学习、知识图谱、知识检索等关键技术突破与开发。

    背景要求:

    1、 至少精通C++/Java/Python中一门编程语言,有/Elastic Search /Tensorflow /pytorch /mxnet /Keras等开发经验者优先;

    2、熟悉Spark, hadoop相关知识、常用数据库(如mongodb, neo4j, apache titan等)均可;

    3、熟悉搜索系统原理、具备互联网搜索、企业垂直搜索、智能问答、对话、知识图谱相关研发经验者优先;

    4、熟悉机器学习技术理论和常用算法,自然语言处理基础理论和常用算法、知识抽取、知识表示和推理、知识融合等关键技术者优先。

    工作地点:

    北京、深圳、上海、杭州、西安、武汉

    08

    AI平台/性能优化

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    1、负责华为自研AI框架MindSpore的设计和开发,突破分布式并行、模型加速、端云协同等核心技术,实现自研框架在易用性和训练/推理性能上业界领先(业界有TensorFlow,PyTorch等知名框架);

    2、负责构建基于自研AI框架的ModelZoo,开发计算机视觉、自然语言处理、推荐等领域的基础算法模型,并针对特定计算硬件(昇腾/GPU/CPU)进行性能优化。

    背景要求:

    1、计算机、软件工程、数学等相关专业,本科以上学历;

    2、具备较强的编程能力,至少精通一种主流编程语言,如C++ /Python/Java等;

    3、熟悉深度学习算法,至少熟练掌握TensorFlow/PyTorch/MxNet/Caffe等一种主流AI框架;

    4、有分布式系统开发或软硬件模型调优经验优先,如分布式AI训练、异构计算、模型加速、GPU/CPU并行、高性能计算、编译优化等;

    5、在高水平国际会议和学术期刊发表过相关论文,或有高水平竞赛获奖经历。

    工作地点:

    杭州、深圳、北京、上海、西安、武汉

    09

    计算机视觉

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    1、利用AI、机器学习、摄影测量、计算机图形学等技术实现大规模3D场景还原与理解,服务于智能终端、智能驾驶、5G勘测等业务;

    2、利用AI、机器学习、SLAM、GNSS等技术实现室内外高精度定位,服务于智能终端、智能驾驶等业务;

    3、负责或参与GIS平台的系统设计、代码开发、测试验证,为各领域提供GIS服务能力。

    背景要求:

    1、利用AI、机器学习、摄影测量、计算机图形学等技术实现大规模3D场景还原与理解,服务于智能终端、智能驾驶、5G勘测等业务;

    2、利用AI、机器学习、SLAM、GNSS等技术实现室内外高精度定位,服务于智能终端、智能驾驶等业务;

    3、负责或参与GIS平台的系统设计、代码开发、测试验证,为各领域提供GIS服务能力。

    工作地点:

    北京、深圳、杭州、武汉、上海、西安

    10

    推荐搜索

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    1、洞察推荐系统和信息检索技术在工业级产品的有效解决方案;洞察学术界推荐系统和信息检索的最新研究成果;

    2、研发业界领先的推荐和搜索技术,发表高水平的专利或论文,保护相关的核心算法和解决方案,提升华为在推荐系统和信息检索领域的业界影响力;将研究成果落地应用,解决华为推荐和搜索产品的实际问题,满足业务需求的开发。

    背景要求:

    1、 获得计算机科学、机器学习、统计学、应用数学等领域的优秀硕士;2、有良好的研究背景和成果,对算法研究兴趣浓厚,业务抽象能力强;具备创造性思维,能够将全新想法转化为工程应用;对研究工作充满热情,具备良好的团队合作精神和沟通能力;

    3、具备较强的编程能力,精通主流编程语言,如C++ /Java /Python等;

    4、在高水平国际会议和学术期刊发表过相关论文,或有高水平竞赛获奖经历。

    工作地点:

    北京、杭州、上海、深圳、西安、武汉

    11

    AI 软件开发工程师

    (人工智能工程师

    请上下滑动阅览

    岗位职责:

    1、负责AI框架、自动驾驶、机器人等AI领域的软件工程化和产品开发;2、负责计算机视觉、激光点云处理、多传感器融合、预测推理决策等AI算法在华为异构计算芯片的加速实现、部署和调优,做到性能在业界领先;

    3、负责自动驾驶产品感知、融合、导航定位、运动规划与控制等高实时低延迟软件开发和优化;

    4、负责产品的集成和调测,以及各类工具链的开发。

    背景要求:

    1、计算机相关专业,具备一个及以上大型实际软件项目经验,独立承担过关键子模块的开发工作;

    2、熟练运用至少一门编程语言(C++ /Java /Python等);

    3、深入理解计算机系统架构与操作系统,熟练掌握异构计算平台原理和典型硬件加速器的使用方法,熟练运用并发编程和底层调试,熟悉Linux/ROS;

    4、 熟悉深度神经网络、计算机视觉、机器人导航定位、运动规划等算法领域中的至少一种,能够针对算法特点与芯片硬件特点设计最佳算法实现方式并优化部署;

    5、了解编程规范/惯用法/设计模式,掌握OOD/业界常用框架优先。

    工作地点:

    杭州、深圳、北京、上海、西安、武汉

    12

    网络安全工程师

    网络安全与隐私保护工程师

    请上下滑动阅览

    岗位职责:

    主导华为ICT基础设施软件核心安全技术能力和竞争力,包含不限于OS微内核安全架构及攻防技术,密码学前沿技术,网络协议安全及攻防技术,AI安全前沿技术,安全渗透技术。

    背景要求:

    OS内核安全、密码学、网络协议安全、AI安全、安全渗透、安全攻防、逆向分析、漏洞分析与挖掘、形式化分析等经验。

    工作地点:

    北京、上海、杭州、深圳、南京

    13

    隐私保护工程师

    网络安全与隐私保护工程师

    请上下滑动阅览

    岗位职责:

    1、参与隐私保护技术在产品与服务中的设计与实现;

    2、分析全球隐私保护法律要求、行业标准及业界实践,制定隐私保护策略与流程;

    3、制定新技术、新业务发展的隐私保护合规架构,参与业界相同行业标准和规范的制定;

    4、组织隐私保护行业展会,策划隐私保护发言,与客户交流隐私保护合规实践与技术方案。

    背景要求:

    1、计算机、软件、信息安全、密码学、网络安全技术与工程、人工智能等相关安全专业本科及以上学历;

    2、熟悉网络安全、信息安全等相关领域:如端口、服务漏洞扫描、程序漏洞分析检测、权限管理、入侵和攻击分析等;

    3、具备扎实全面的计算机、网络(TCP/IP)等方面的基础知识;

    4、熟悉主流编程语言之一:Java/ Python/C/C++/ C#/ PHP/ Shell等编程语言、脚本语言,熟悉Linux系统和主流数据库,了解主流的互联网安全技术和安全产品,如网络安全,主机安全,应用安全,密码技术,以及防火墙、入侵检测和防病毒等安全产品;

    5、对安全攻防、渗透测试(如DDOS攻防、提权等)等相关安全专题有相关项目经历,或具有华为公司系列认证证书(HCIE/HCNP/HCNA)、业界网络安全证书者优先;

    6、有网络安全实习经验或网络安全大赛(如CTF)经验优先。

    工作地点:

    北京、南京、深圳、上海、西安、武汉、杭州

    14

    软件测试工程师

    测试工程师

    请上下滑动阅览

    岗位职责:

    致力于云计算基础设施(含OS/容器/网络/协议/数据库/微服务等)的集成与验证,并将基础设施应用于CloudRAN/SDN/NFC等前沿解决方案。

    背景要求:

    1、熟悉IaaS层Openstack/VMWare、网络OVS;

    2、熟悉数据库,使用过Postgre,Ramcloud,Aurora等部件;

    3、熟悉Kubernetes、Mesos、Docker等云计算技术;

    4、熟悉Kafka、Redis、Nginx、LVS、 EDAS等中间件。

    工作地点:

    北京、上海、深圳、西安、杭州

    15

    智能汽车系统设计

    技术研究工程师

    请上下滑动阅览

    岗位职责:

    1、负责整车系统和架构设计,包括整车系统需求管理、功能设计、可靠性设计、体验设计、诊断开发、功能安全开发、网络开发等;

    2、负责面向L3、L4智能电动汽车的造型/车身/底盘悬架/转向系统/制动系统/电子电气系统/车载传感器等领域的技术方案设计、工程开发及验证等工作;

    3、负责整车仿真平台建设,进行多模型整车虚拟集成仿真开发,搭建基于整车多学科多部件多方法(动力性经济性、主被动安全、可靠性、NVH、多总线车载网络通讯、虚拟ECU、车载OS系统、形式化验证、MBSE、IT架构等)的系统级设计仿真平台,构建面向智能汽车数字化开发能力;

    4、开发车辆控制算法;负责控制算法的设计审查、功能验证、性能评价和相关问题的整改;

    5、聚焦新能源汽车未来发展方向,进行下一代整车架构预研。

    背景要求:

    1、车辆工程、机械工程、控制工程、机电工程等相关专业;

    2、熟悉整车系统,熟练运用相关软件,能独立承担相关业务;

    3、具备一定的机械设计、嵌入式软件或者控制算法开发能力;

    4、有相关项目经验或工作经验者优先;

    5、团队协作能力强,思路清晰,需有优秀的沟通和协调能力,能吃苦耐劳,抗压能力强。

    工作地点:

    北京、杭州、上海

    16

    车联网与自动驾驶

    技术研究工程师

    请上下滑动阅览

    岗位职责:

    1、协助公司构建AI关键技术方向上的竞争力,并实现AI技术在特定场景下的综合应用,提升公司相关产品的核心竞争力和用户体验;在以下一个或多个领域中从事相关研究和开发工作:

    -自动驾驶系统架构设计

    -自动驾驶软件架构设计

    -计算机视觉、模式识别、多媒体内容分析

    -传感器融合算法

    -SLAM/VIO算法

    -地图/定位算法

    -智能决策、推理、路径规划和运动控制

    -智能驾驶数据分析与仿真算法

    2、负责本领域算法/模型的设计、实现、测试和评估;

    3、负责与内外部合作伙伴、研究机构的沟通和交流。

    背景要求:

    1、具备扎实的编程实现能力,熟练使用C/C++,Python/Matlab等编程语言;熟悉Linux编程和熟悉中间件(ROS/DDS等)者优先;

    2、具备良好的团队合作精神、沟通协调能力、执行力,对前沿领域有高度的技术敏感性,勇于接受挑战;

    3、有以下经历优先考虑:

    (1)具备移动机器人等领域研究经验,参与国内外知名相关竞赛,如未来挑战赛等;

    (2)具备相关工程或开发经验,如深度学习、仿真系统搭建/开发经验等;

    (3)传感器融合算法方向要求熟悉视觉、毫米波雷达、激光雷达和GPS/IMU等传感器;

    (4)发表过领域知名会议/期刊论文。

    工作地点:

    北京、杭州、上海

    17

    自动驾驶算法工程师

    算法工程师

    请上下滑动阅览

    岗位职责:

    1、负责自动驾驶中视觉感知算法的长期研发和迭代。图像识别算法在实际产品中的落地和优化提升。感知相关的视觉神经网络的设计、开发和迭代、部署和维护;

    2、负责自动驾驶构图与定位算法技术的长期研发和迭代,以及算法技术在产品中的落地和优化。高精度地图、自动化构图及场景重建、自主高精度定位相关的产品与算法研发。建立公司地图领域核心竞争力,负责点云/图像等多源数据处理(标定、配准、融合、目标检测、分割等)相关的算法研究、开发工程部署;

    3、负责自动驾驶决策、规划和控制算法技术的长期研发和迭代以及在实际产品中的落地和优化提升。负责自动驾驶系统的系统集成,与感知定位等其他模块的对接和自动驾驶车辆线控接口开发与调试,进行车辆动力学建模及系统辨识;

    4、负责自动驾驶评测算法的设计并指导落地,参与核心算法的开发。自动驾驶异常事件相关数据的分析、设计和开发工作。自动驾驶场景相关数据分析、设计和开发工作。

    背景要求:

    1、了解自动驾驶领域的相关算法,有实际视觉感知、Lidar感知算法产品及落地经验者、熟悉3D GIS引擎或者地图引擎架构,有OpenDrive和NDS等数据标准经验优先;

    2、具备软件开发经验,计算机、通信、电子工程、测绘、地理信息等相关专业,具备良好的计算机、软件工程领域知识基础;

    3、具备良好的学习能力、分析解决问题能力,具有高度的责任心和团队合作精神;

    4、有相关机器人、无人机、无人车比赛经历者优先。

    工作地点:

    北京、杭州、上海

    18

    软件算法工程师

    算法工程师

    请上下滑动阅览

    岗位职责:

    我们致力于软件算法的研究设计,通过算法大幅改善产品体验和性能效率 

    1、可以对单点算法性能做出极致优化,或具备全局视野,能从E2E考虑算法应用竞争力体现;

    2、 负责移动终端设备人工智能、大数据挖掘算法和解决方案的研究、设计、验证和交付;

    3、 对传感器在专业运动健康、生物识别、情景感知等技术做出优秀的用户体验。

    背景要求:

    1、具备人工智能AI算法、大数据算法、数据结构算法设计和开发能力;2、具备前沿人工智能技术跟踪和业界趋势的跟踪和算法应用能力;

    3、至少掌握Java/Python/C其中一种开发语言,掌握Hadoop开源工具使用更佳;

    4、至少掌握一种数据挖掘工具和深度模型训练工具:如Tensorflow,caffe,matlab;

    5、具备较强的动手实践能力,能够快速把想法用算法程序的实现;

    6、具备挑战不可能的精神和创新意识,主动担责,攻坚破难;

    7、具备良好的团队合作精神,善于沟通。

    工作地点:

    北京、南京、深圳、上海、西安、武汉、杭州

    ---------♥---------

    声明:本内容来源网络,版权属于原作者

    图片来源网络,不代表本公众号立场。如有侵权,联系删除

    AI博士私人微信,还有少量空位

    如何画出漂亮的深度学习模型图?

    如何画出漂亮的神经网络图?

    一文读懂深度学习中的各种卷积

    点个在看支持一下吧

    展开全文
    qq_15698613 2021-05-13 15:31:33
  • 但由于各自使用的语言不太一样,再加上我和另外两个队友并不是一个学校的(另外两个队友是相互认识的),彼此之间交流不太方便,最终决定先各自写各自的代码。 当然后面几天也陆陆续续开了几次会,这里就不多讲了。 ...


    前言

    在这里插入图片描述

    随着大赛初赛结束,我们的旅程也告一段落,虽然没能进复赛,但也取得了杭厦赛区第五十二的成绩(查重之后提升了三名),也算区赛64强。虽然有些遗憾,但作为第一次参加这种比赛的大二学生来说,也不算太差。
    在这里插入图片描述
    在这里插入图片描述

    在这次比赛中我学到了很多,不论是代码编写还是思维方式,都有很大的提升。同时我也认识到了自己的不足,明白了自己和那些大佬之间的差距。总之,感想挺多,故有此文,也算是对这次比赛经历的回顾总结吧。

    一、赛题

    本次赛题是在云计算背景下的服务器资源分配和调度问题。详情请看官方网站,大赛文件我也会和我的代码一起放在我的gitee中,为后来者做个参考。

    二、比赛回顾

    在这里,我主要分享一下我的比赛过程。(赛题思路将在思考过程中讲)

    1.组队

    在赛题发布之前,大赛群里有个浙大博士找队友,而我也正好符合她的要求(主要是她代码编写不太行),所以我私聊了她,后来也算有了队伍,原本约定赛题出来后一起讨论分析,可无奈每次发消息给她,她都没怎么回,说是太忙了(也许真的是太忙了吧),最终一周后她决定不参加比赛。

    好在我这段时间并没有干等,自己写了一份自己的赛题分析和思路。
    在这里插入图片描述

    在这里插入图片描述

    随后我在大赛群里问了一下有没有缺队友的,不久后有人向我发出了邀请,也就是我现在的队友。
    在这里插入图片描述

    2.开会讨论

    组好队时,已经一周过去了,距离正式赛只有一周多一点的时间。在组好队的当天晚上,我们开了一次会,简单讨论了下此次赛题。但由于各自使用的语言不太一样,再加上我和另外两个队友并不是一个学校的(另外两个队友是相互认识的),彼此之间交流不太方便,最终决定先各自写各自的代码。

    当然后面几天也陆陆续续开了几次会,这里就不多讲了。

    3.代码修改迭代、改bug

    根据代码思路进行编程(赛题思路我会在思考过程那里说明),历经千辛万苦终于写出了一版能提交的baseline,然后再baseline的基础上不断优化,当然这个过程会出现各种各样的bug,还有各种未知的困难。

    4.最后几天的奋斗

    说实话,如果没有队友,在最后几天你很可能会坚持不下来,因为排行榜上不断有团队冲上来,这时候你的压力会很大,尤其是当你的代码遇到各种各样的bug而一筹莫展时,这种感觉就会尤为明显。在这个阶段你会非常焦虑,而我也是如此,我真的好多次差点放弃。(其实很多团队是中途放弃的)

    而在一周的高强度优化中,最后几天精神也会非常疲惫,这点我在最后一天的时候非常明显,因为我们离进32只有2千万,可自己的方案各种受挫,想进32又进不去,非常难受,当时我真的一度想放弃。

    三、思考过程

    这里我大致记录一下当时的思考过程。

    1.初步思考

    一开始分析赛题,我把它当做01背包问题,想用动态规划来解决。但仔细思考后发现这又和平常的01背包问题不同,它是多维度的,而且有各种复杂的约束条件,在查阅了相关资料后,最终否定了动态规划这个方案。
    因为每个阶段的最优状态并不可以从之前某个阶段的某个或某些状态直接得到。
    具体可以参考这篇博客动态规划(DP)通俗讲解

    否定了动态规划后,我决定转换视角,并不从虚拟机角度出发去选择放哪台服务器,而是从服务器角度出发,去思考放哪台虚拟机。

    根据该赛题,我将它分为三个步骤:购买、迁移、部署。

    而各个步骤只需做到以下几点便可:
    1.购买:满足当天请求的情况下尽可能少花钱
    2.迁移:目的在于尽量整合资源,让服务器空出来,同时能更好的装下接下来的服务器
    3.部署:尽可能的部署当天的虚拟机请求,尽可能利用现有资源

    可如何去做呢?
    我的初步思路是先迁移,整合资源,然后先初步部署尽可能利用现在的资源,当有放不下的虚拟机请求时再去购买服务器,再对新买的服务器进行部署。

    同时我把请求从大到小进行排序(双节点在前,资源大的在前),这样可以尽量塞满服务器。

    2.第一版代码

    有了大致思路,我决定按照基本的思路先写一版代码出来,当然这个过程遇到了很多困难,遇到了很多bug,但最终还是写出了一版,这个过程花了大概两天左右。虽然第一版出来了(实际上提交不上去,因为有各种原因,如请求顺序问题,输出格式问题),本地测试效果也并不理想。

    3.思路改进

    ①平衡部署与非平衡部署

    在第一版代码之上,我用小规模数据进行调试分析,发现了一个问题,就是服务器资源利用非常不均衡,有些虚拟机内核比内存甚至达到到100以上或者0.01以下(这纯粹是恶心人,现实中哪有1000内核,几内存的服务器啊)
    在这里插入图片描述

    这就导致了部署虚拟机时,常常会因为这些个极端的虚拟机造成服务器资源浪费。

    为了解决这个问题,我想到一种方案,就是——平衡部署。
    所谓平衡部署,就是针对上述情况作出的改进策略,就是在部署之前进行一次平衡检测,如果这台虚拟机插入到此服务器中会导致该服务器内核内存比过高或过低(即失衡),那么拒绝此次插入。

    具体的失衡标准是这样的:如果插入后的剩余资源小于某个值,那么不用去判断内核内存比(因为这样没意义),直接通过;否则进行内核内存比判断,如果剩余资源的内核内存比小于或大于某个值,即出现失衡情况(如上图所示),那么拒绝此次插入。

    与此同时,在平衡部署过后,即当天的请求尝试平衡部署到这台服务器后,再进行一次失衡部署(不加平衡检测),这样既能最大程度保证合适的虚拟机插入合适的服务器,又能尽可能利用资源。

    此次改进过后,资源利用率有了明显的提高。有些服务器(一般服务器内核,内存都在500左右)剩余资源甚至达到了1或2。
    在这里插入图片描述


    ②策略动态更新

    但与此同时我也发现了个问题,在调试后我发现前几台服务器利用率是非常高(如上图所示),但是在后面几台利用率出现了断崖式下跌。
    在这里插入图片描述

    原因:猜测是每天虚拟机请求分布并不均匀,当天的请求(内核/内存)差距太大导致的。

    这是购买服务器时出现的问题,怎么办呢?

    我想到了一种方法(也是我的核心思路之一),那就是策略动态更新。
    所谓策略动态更新,就是根据每天的请求,我动态调整购买策略和部署策略,具体体现在平衡因子和平衡边界的更新。

    具体做法:我程序中有updateStrategy方法,意为更新状态,它所做的就是统计当日剩余请求的平均内核和平均内存,根据其值来更新平衡因子和平衡边界,进而调整购买策略和平衡部署策略。而平衡因子就是这平均内核和内存的比值,平衡边界就是其相加再乘以一个系数。
    在这里插入图片描述

    同时为了提升资源利用率,我把购买服务器的选择变成根据当前剩余请求去选择内核内存比最相近的服务器。

    此次改进后,服务器利用率有了非常大的提升,除了最后一两台服务器外,其他服务器利用率都非常高,剩余的资源和一般在10-20之间,有的甚至只剩了1、2的资源。

    在一番改进后(当然有很多细节方面的改进,在此就不赘述了),我们不加迁移的版本在练习赛阶段跑到了11亿9千万,正式赛在15亿3千万。
    在这里插入图片描述

    在这里插入图片描述


    ③迁移优化

    至于迁移,根据之前的思路,我很快制订了迁移策略,即先把之前非平衡部署成功的虚拟机进行迁移,尝试平衡部署到其他服务器上(当然我加了一些判断,如之前记录的非平衡虚拟机如果服务器已经平衡则不必迁移),这样才能让服务器重归平衡,可以让服务器装下更多的虚拟机。

    如果迁移次数还有多则进行全部迁移,即从虚拟机少的服务器往虚拟机多的服务器上迁移,这样既能整合资源,放下更多虚拟机,又能节省不必要的能耗开销。

    但是这样迁移会有一个明显的问题——时间复杂度太高,每次迁移要花费0.6s左右,如果运行练习赛的数据集大概要跑500+s,这对于90s限制来说是致命的。

    于是我对代码进行了优化,主要在以下几点:
    1.外层循环优化:对于不必要的循环及时退出或者跳过,对于一些情况进行剪枝处理
    2.数据结构优化:采用专门的数据结构,尽量减少内存和时间消耗
    3.内部操作优化:对内部操作,如对部署操作进行优化,对于一些不必要情况直接判断返回
    4.代码细节优化:如变量声明放在循环外等(当然这个是我很早就已经优化过的)

    经过上述优化后,我的代码运行时间直接优化到了20s附近,这是一个惊人的优化,我之前从没想过我的代码能优化这么多。

    但是由于线上数据集明显增大,在本地跑20多秒在线上依旧超时,无奈只能减少迁移操作的次数,从每天都会触发全部迁移到只有删除请求大于增加请求时才会触发全部迁移操作。

    最终我们的成绩来到了14亿9千万,经过调参,成绩最终来到了14亿8千万,而这也是我们最好的成绩。
    在这里插入图片描述

    ④最后的优化尝试

    此时距离正式赛结束只有两天时间了,经过各种优化,我们发现我们很难再迁移和部署操作上减少成本(迁移操作主要碍于运行时间)。

    于是我把目光转向了购买操作,因为我的购买操作是根据当前剩余请求的内核内存比来选择的,并没有考虑到成本,尽管利用率很高,但是成本始终降不下来,于是我想能不能考虑到购买成本这个因素(之前有写过一版考虑性价比的,但结果并不理想,利用率很低)。

    特殊情况特殊处理

    在比赛结束前的一个晚上,我们和一个大佬交流过,他说我的方案对于比较平衡的服务器虚拟机效果会比较好,但是对于一些比较极端的虚拟机和服务器比较吃亏,他给我们的建议是可以把这类虚拟机请求拿出来另外处理,专门用对应的服务器进行部署。

    确实,我的方案是尽量按照当前的虚拟机内核内存比去选择服务器,但是问题就在于,统计完当前剩余的虚拟机请求后,其内核内存比都会接近1(大概是0.8-1.2左右),就算有那些比值夸张的虚拟机,这些特征也都被另外一些一种极端的虚拟机给中和掉了或者被比值比较均衡的虚拟机给稀释了,程序很难识别出来这些特征,所以程序一般都会买那种内核内存比接近1的服务器,而这类服务器往往性价比不高。
    在这里插入图片描述

    只有当部署请求的不断减少,剩余请求的特征不断被凸显出来时,这时程序才会买那种内核内存比比较大的服务器,所以我的购买成本才会降不下来。

    分开处理确实是一个好的方法,并不是说有多大的资源浪费(因为我的资源利用率其实并不低),只是说如果拿内核内存比比较夸张的服务器去装内核内存比同样夸张的虚拟机,这样花费的钱会更低。

    于是第二天大清早我就开始改代码,但我渐渐发现如果要那么去改,一个上午和一个下午的时间是不够的(因为这个思路会涉及我部署策略的更改,而我的部署策略与另外两个步骤息息相关,是全部代码的核心,改起来难度比较大,而且还要调试错误,再加上那时候我并不知道这个改动到底会不会会降低成本),改了一个上午最终决定放弃这种思路的更改。

    叠加选出最优解

    既然我们的瓶颈在于购买时并没有考虑成本问题,那么我尝试融入成本。于是我想出了另外一个方案,具体方案如下:
    我把请求按顺序进行叠加,每次叠加后会去寻找能装下叠加后的虚拟机且花费最低(成本+能耗*剩余天数)的服务器类型,记录当前资源和当前选择的服务器资源之差,然后继续叠加,直到找不到能够装下这些请求的服务器为止,在这个过程中就留下了在叠加过程中资源之差最小的服务器类型,而这台服务器便是此种情况下的最优解。
    在这里插入图片描述

    但此种策略结果和我之前策略花的成本差不多,当然这并不代表此种方案不行,它还有改进的地方,比如资源之差最小并不是最好服务器类型的标准,可以改变判断策略;又比如不一定要按顺序对虚拟机进行叠加等等,无奈当时所剩时间不多,只能放弃。但我觉得这个方案还是挺巧妙的。

    四、思路总结

    在这个赛题中,我觉得我有两个策略是做的比较好的,一个是平衡部署,一个是策略动态更新。

    想象一下你的面前有一条河道,里面有不同大小的坑(服务器),一堆大小不一的石头(虚拟机请求)从上方滚下,如果大小和合适(平衡部署),那么石头就滚入坑中,一遍滚过后,除了最后几个坑之外,其他坑几乎都会被填满。而石头每次滚下,坑就会变换相应的形状(策略动态更新),有针对性应对这次滚下的石头。

    当然还有一种没有完善的购买策略,那就是叠加选出最优解,这个也是值得思考的方法。
    (详情请看思考过程部分)

    这次比赛,我做的不好的地方就在于购买策略方面并没有考虑性价比,对于极端情况的考虑也有所欠缺。而这也是我们在32以外无法再进一步的原因。

    除了思路上的欠缺外,我用Java打比赛也有弊端,这点体现在我迁移并不能全部迁移,只能受限于运行时间而有针对性对部分迁移进行舍弃,如果没有运行时间的限制,那么我们应该还能再前进1-2千万。

    五、bug路漫漫

    这一路优化过来,我遇到非常多的bug,这也是为什么我们的团队名叫做都是bug。唉,一路心酸,只能叹一句bug路漫漫!

    以下记录了我几个找bug的经历

    1.死循环

    当时代码遇到超时的问题,我优化很久,优化一些逻辑,删除不必要的代码,把代码从700+行优化到380+行。可是问题依旧没有解决。

    以下是我当时的bug记录:

    在这里插入图片描述

    2.服务器超限

    在提交过程我经常遇到这个bug。
    在这里插入图片描述

    这个一般是请求顺序的问题。
    以下是我当时的bug记录:
    在这里插入图片描述

    当时我以为是我处理请求的逻辑不对,于是我该用顺序处理的方式来处理请求,可结果依旧是虚拟机资源超限。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    最后的bug竟然仅仅是因为一个数字!!!仅仅是因为一个1!!!
    oh,my god!

    六、对于后来者的建议

    如果你是之后想参加华挑的,根据我的比赛经历,我给你如下建议:
    1.找队友一定要找好,不要选那种中途放弃的,很多时候队友并不能帮你改善思路,但能在你想要放弃时鼓励你不断前进
    2.做好代码管理,一个好的代码管理可以让我们后期优化时省力许多
    3.尽量先思考清楚再写代码,后期大改成本会很大
    4.多和大佬交流,但不是照搬,而是根据大佬的思路去思考有没有更好的思路,以此来完善自己的思路
    5.发散去思考问题,很多时候解决方法并不只有固定那几种
    6.改bug的时候,用小规模数据(自己可以逐步预测怎么发送)进行测试,如果发现过程中不符合你预期的那说明这部分代码有bug,然后逐步缩小范围,去查找bug所在,一定要仔细,能静得下心,沉得住气
    7.如果能用c/c++打比赛就用c/c++打比赛,因为其他语言运行效率并没与它高,当然如果你是和我一样想用特定的语言也没关系,这次比赛运行时间并不是决定性因素

    七、感想总结

    此次比赛感想挺多的,努力了一周,也翘了一周的课(笑哭),虽然最终没能进复赛,但是对我的帮助挺大的。尤其是算法和代码优化这方面。

    挺佩服前排那些大佬,能将成本压到这么低,这是我远远不能达到的。

    当然现在的我水平还是不够,类似这种调优经验也少,以前我专注于学习Java后端开发的知识,而疏于底层代码编写优化,所以以后我要多补补数据结构和算法的知识,努力学习,争取明年再战时能进复赛。


    最后附上这次的代码gitee地址,里面有这次比赛的有关文件,如有需要,自行下载即可。


    愿我们以梦为马,不负青春韶华。
    与君共勉!

    展开全文
    qq_46101869 2021-03-28 18:01:41
  • 二面是主管领导面试,主要根据实习项目或个人开发项目进行面试,包括项目的主要内容和使用的javaweb开发所使用到的框架。 4、最后差不多11月份收到offer 面试官问的面试题: 1、java申明类型有哪些。 2、java继承和...

    2020-06-16 15:02:18 | 校园招聘

    面试过程:

    一面面试官非常的凶,感觉就是压力技术面,他想问我C++,但是看我的简历上写的全是java,所以又百度了几个题问我,最后有一道算法题,就是leecode简单级别的,一个二分查找的题。二面是一个年轻人,感觉毕业没多久吧,技术厉害一些,就是按照简历来提问,一直提问到不会为止,最后让自己手动实现一个hashmap,没做出来,换了一道,括号匹配的题。三面不是纯聊人生,还问了一些基础的问题,我当时答错了,很遗憾。 面试官问的面试题:

    jvm(类加载)

    linux内存状态的代码

    自增爆了,怎么处理(变long或者更大的数据类型)

    GC算法

    是否能以一个临时变量为根节点去替换一个类(.CLASS已经加载)

    tcp/ip协议,最大传输几个字节

    接口和抽象类怎么区别(哪一个更抽象一点)

    MVC全称是啥

    算法:二分查找、手动实现一个hashmap、括号匹配

    2020-04-24 09:22:00 | 校园招聘

    面试过程:

    先是问了项目,后续是做了一道算法题,最后是问了一些基础的问题可惜都没怎么回答的上来,最后就问了对华为的文化的看法 面试官问的面试题:

    1,描述下你做的项目,多线程下对数据库的访问拥堵怎么解决(操作系统相关的就这个,没答上来)

    2,编程题:公交车换乘问题,忘记Dijkstra怎么写了,然后面试官告诉我不用图也可以写,待会去搜搜解决

    C++相关:

    3,虚函数和纯虚函数的作用是什么?之间有什么区别

    4,单例函数相关,记不清

    数据库:

    5,如何查询一个表中重复的成员

    6,apache和nginx的区别是什么?说下apache的特点

    计算机网络

    7,TCP三次握手,四次挥手

    8,TCP与UDP之间的区别

    9,SSH相关,没了解过SSH

    2020-03-28 09:01:19 | 校园招聘

    面试过程:

    一共分为性格测试、笔试、一轮技术面试、二轮技术面试和综合面试。由于现在疫情原因都是视频面试,一轮、二轮和三轮都安排在了一周内。 面试官问的面试题:

    一轮:

    1、自我介绍

    2、讲一段你觉得最能展现你能力的经历。面试官针对经历的细节问了很多问题,如用的什么语言、你遇到问题是怎么解决的、数据是储存在哪里的。

    3、现场写了一题代码,内容是读取文件的后n行。后续问了有没有改善的地方,如何减少空间和时间的复杂度。

    4、和测试相关的问题。给了一个场景,问你会测试哪些内容。

    5、白盒测试和黑盒测试

    6、你有哪些问题

    二轮:

    1、自我介绍

    2、有没有网络、通信相关经验

    3、会不会C语言

    4、介绍一段项目经历

    5、现场写了一题代码,很简单的字符串处理

    2020-01-03 13:53:54 | 校园招聘

    面试过程:

    1、2019年7月应届毕业生,通过华为官网申请华为2019年应届毕业生优招通道。

    2、接收到笔试链接,笔试题目三道编程题,基本上通过一道多一点即可进入面试环节。

    3、面试分为二面,一面主要是根据简历进行面试,首先面了java基础,javaweb,项目经历,然后根据项目进行拓展聊了一会web安全,其他面了一些nosql的基础等。二面是主管领导面试,主要根据实习项目或个人开发项目进行面试,包括项目的主要内容和使用的javaweb开发所使用到的框架。

    4、最后差不多11月份收到offer 面试官问的面试题:

    1、java申明类型有哪些。

    2、java继承和多态的应用。

    3、用java写一个单例模式。

    4、项目中使用了哪些技术。

    5、spring AOP和IOC说一说。

    6、论文主要研究方向,论文中的认证是怎么做的。

    7、根据要求写一个sql语句。

    8、redis有几种数据类型并说一下特点。

    9、nosql有几种数据类型。

    10,项目中主要功能有哪些。

    2019-12-25 09:34:28 | 校园招聘

    面试过程:

    10月20日,我通过校园招聘面试华为。面试有三次,都在同一天进行,我们是华为面试的最后一批。前两面是技术面,最后是综合面试,技术面中需要写代码(有清楚思路即可,不需要完全写出所有代码)。在技术面中我的表现较好,两位面试官都给了我比较积极的评价。综面也比较顺利,面试官和我聊了比较长的时间,面试官本人也很有耐心,给人一种如沐春风的感觉,让我觉得应该会被录取。然而,等了将近一个月之后,华为电话告知我还在审核中,直到12月仍然没有任何消息,所以最终结果应该是没有通过面试了。 面试官问的面试题:

    技术面考察逻辑思维能力,比如让我写一段伪代码,以及问我解决一个问题的思路。综面考察个人整体素质,问我能否接受去国外出差,之前做过哪些项目,以及是否对无人驾驶领域感兴趣等等。

    2019-11-19 10:21:26 | 校园招聘

    面试过程:

    1、2019年7月应届毕业生,本人通过华为官网申请华为2019年应届毕业生优招通道。

    2、首先hr会筛选简历,简历通过后会接收到笔试链接,笔试题目三道编程题,基本上通过一道多一点即可进入面试环节。

    3、面试分为二面,一面主要是根据简历进行面试,首先面了java基础,javaweb,项目经历,然后根据项目进行拓展聊了一会web安全,其他面了一些nosql的基础等。二面是主管领导面试,主要根据项目进行面试,包括项目的主要内容和使用的javaweb开发所使用到的框架。

    4、最后等华为2020年校园招聘面试结束后,差不多11月份收到签约offer 面试官问的面试题:

    1、java申明类型有哪些。

    2、java继承和多态的应用。

    3、用java写一个单例模式。

    4、项目中使用了哪些技术。

    5、spring AOP和IOC说一说。

    6、论文主要研究方向,论文中的认证是怎么做的。

    7、根据要求写一个sql语句。

    8、redis有几种数据类型并说一下特点。

    9、nosql有几种数据类型。

    10,项目中主要功能有哪些。

    展开全文
    weixin_39611043 2020-12-21 12:49:12
  • weixin_39818550 2021-05-20 04:23:54
  • weixin_36304806 2021-01-13 10:00:39
  • baidu_31788709 2021-04-06 20:42:25
  • weixin_33491377 2020-12-31 02:30:22
  • weixin_39605578 2020-12-21 12:49:13
  • qq_35967022 2021-08-21 18:21:04
  • weixin_30880009 2021-06-08 10:16:14
  • zy1281539626 2021-02-24 21:42:02
  • weixin_39531183 2021-01-17 14:35:30
  • weixin_39760967 2020-12-22 09:05:22
  • weixin_36338808 2021-08-12 01:18:10
  • weixin_39668282 2020-12-22 09:05:19
  • weixin_35639451 2021-07-23 07:25:33
  • weixin_42929461 2021-01-08 13:55:19
  • weixin_37171673 2021-03-30 14:14:28
  • weixin_54496560 2021-03-05 11:39:56
  • kayle1995 2021-04-20 16:35:54
  • weixin_30540871 2020-12-23 13:55:48
  • weixin_33049919 2021-08-07 10:57:10
  • weixin_31076173 2021-08-02 01:52:49
  • qq_33548747 2021-03-31 13:24:07
  • weixin_48711866 2021-11-26 14:04:48
  • weixin_42561910 2021-06-07 07:17:53
  • weixin_32243309 2021-07-26 04:33:20
  • weixin_31188325 2021-01-14 04:11:20

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,927
精华内容 25,170
关键字:

华为查看软件使用时间