面试经历之阿里云

阿里云弹性计算团队春招实习内推面试+阿里云盘古团队秋招内推面试。

(实习内推面试挂在二面,秋招内推面试已经面完四轮)

首先是学长帮忙内推了他们组的春招实习,过程十分坎坷。18年春节前阿里云的一个SDN团队招实习生,我报名了,接受了内推,在第一次面试后就挂掉(不太明白为啥),但是由于每个人一个批次只能内推一次,所以内推学长组的时候,找了很久的客服,最后由于我的拒绝理由是转部门,所以可以第二次内推,总之十分艰辛。

实习内推一面(电话面试,大约1小时20分钟):

1. 自我介绍

2. 对着简历问,先问了几个STL的实现,具体记不太清楚了,后面问了几个TCP的问题,都比较简单。

3. 问到项目,首先是第一个项目让我讲了整体的架构,里面涉及到本地数据库的存储结构,问了一下表的结构怎么设计的,由于表项比较多,之后我提出了一个在本地文件存储,然后在数据库中存文件路径的方案,然后问了我如何保证数据一致性的问题,我用了个队列来搞,其实就是个数据库事务的问题(现在想想那时候自己真的是菜)。之后由于我的项目是使用Reactor模型来编程的,所以又问了我关于服务器模型和多路复用的东西,这些能说的就比较多,大概讲了30分钟的epoll、poll、select区别和原理,还有高性能服务器模型(详见之前我的博客)。

4. 算法题,多路归并,比较经典的问题了,但是我是第一次碰到,想了一会想出了nlgn的解法,大概说了一下,然后让我写代码实现一个堆,很遗憾的是那时候我完全忘了堆怎么写,想了很久也没想起来(尴尬),然后就让我写了一个快排,幸好这个还比较熟悉,顺利完成。

总体感觉自己表现一般,堆排序那里没想起来太不应该了,而且对数据库的了解一直是弱项。

实习内推二面(视频面试,大约1小时):

1. 这次面试,只有一道题,一道很简单的算法题,给你一棵树,然后给你一个序列,问这个序列是不是树的某一枝,非常简单,一个dfs加上点处理就可以,唯一比较坑的地方就是给定函数原型,但是我自己犯二没写一个return true,后期一直在debug也没发现,等发现了问题也晚了。

挂在了二面,自己犯傻了,没啥说的,有点可惜。

阿里实习面试挂掉,自己还是太弱了。

秋招提前批的内推,学长说他们组已经有俩实习生了,那边可能不好进,我就找了在盘古团队的学姐帮忙内推,然后之前学习了一下mapreduce,gfs和bigtable的三篇论文,算是对分布式存储有了一定的了解。

秋招内推一面(电话面试,大约1小时10分钟):

1. 自我介绍

2. 你对分布式存储有了解吗,我说了一下自己学习过三篇论文,然后问我了解paxos算法不,一面的时候还没看完bigtable,所以不太了解,就说自己不太会,然后问了我hdfs如果节点出故障了怎么办,我回答了master故障和chunk故障时的几种措施,顺便把整个hdfs的工作流程和数据一致性的问题也讲了一遍,大概耗费了20多分钟。

3. 我看你简历上写在头条实习做了jpeg图片方面的一些东西,能大概说一下吗,接着就粗略讲了一下jpeg算法的步骤和原理,又花了20分钟。

4. 第一道算法题,多路归并(怎么阿里云这么喜欢问多路归并),问题不大,归并思路,维护一个堆就行,复杂度nlgn,开始时候写了个nlgnlgn,后来优化了一下。

5. 第二个算法题,不需要敲代码,只说思路,求二叉树的直径,经典问题,两次dfs,又问我了证明,大二时候证明过,但是忘了,想了两分钟没想起来怎么做的,面试官就说那就不用了,面试结束之后想起来咋证明的了,尴尬。

6. 你有没有什么问题问我的?我询问了一下这个组是做一些什么的,说是分布式存储的块存储,然后又问了一下有没有对我以后的学习的建议,他说没什么建议。

一面自己评价还不错,问的问题都准备过或者接触过,也比较熟悉,所有问题都有话可说。

秋招内推二面(视频面试,大约2小时30分钟)

1. 自我介绍

2. 开始和我聊在头条的工作,和jpeg算法有关的东西,这一部分简直是刷新了我对面试的认知,对每一个细节都死抠到底,比如我提到我的cuda的jpeg缩略程序效率是go自带库的10倍,就问了我这个效率是怎么定义的,考虑到go的库用到了cpu的几个核心了吗,再比如我说官方说NPP库的效率优化50倍以上,而我的只优化了10倍,为什么会有这种差距,可能有什么原因,再比如jpeg格式可以这样处理,那其他格式的图片如何处理,如何优化,如果用你说的双线性插值算法,对其他格式而言需要解决什么问题,整个这个阶段就在一直问我和图片有关的每一个细节问题,不过幸好的是我对于图片的调研和了解还比较全面和细致,基本上所有他问到的点都有过研究,所以都答的还不错,最后问了一下我对于整个实习阶段有什么收获,我的回答是这次实习让我觉得自己更有自信能胜任一个从没有接触过的领域,第一次接触图片领域,通过自学和研究能完成任务,让我觉得无论以后在哪个方向上工作,都能很快速地入门,其次收获就是拓宽了自己的知识面。这个阶段一共用了1小时20分钟。

3. 一些基础问题,了解STL源码的内部实现吗,说几个,deque和list的内部实现是怎么样实现的?deque我只用过,没看过源码,这个没答上。然后问了C++面向对象的问题,我说了自己对面向对象了解不多,然后简单讲了一下面向对象的封装、继承和多态。最后问了下TCP的慢启动,比较简单,把慢启动、拥塞避免、快速恢复和快速重传都说了一遍。

4. 一道算法题,如何不用递归写归并排序(咋又是归并啊),开始我给的答案是用栈来模拟递归,向栈里压入区间,然后利用递归的思想去做,这种做法是可以的,但是他不让我用栈,然后我想的是把无序队列分解成若干个有序队列进行多路归并,但是对于类似于5,4,3,2,1这种倒序数组这个算法的复杂度就会退化到n2。最后我想出了办法,用一个变量记录跨度,初始化为1,每归并一次都*2,一直到这个跨度大于了数组长度,每一趟都能保证一个跨度内的数组是有序的,这样相当于一个二叉树的合并的过程,需要注意点的地方就是边界的问题,整体代码不难写,就是细节的地方很多,我俩一起debug了一会,把边界问题处理好了。期间又个小问题就是我习惯开数组的时候开max值+10,被小小批评了一下,说你们搞竞赛的有些习惯不太好。

5. 闲聊时间,他给我讲了一些关于分布式存储的东西,比如什么样的需求需要设计什么样的分布式系统等等,最后我按照自己的惯例问了他根据我的面试对我有什么建议,回答是,基础知识比较扎实,自学能力和沟通能力都比较强,就是建议有两点,第一,无论以后读研还是工作,都最好深入一个领域去研究,第二就是改掉一些不良的编程习惯。

本次面试堪称膀胱面试,说了150分钟,简直口干舌燥,不过自我感觉挺不错的,这个面试官也算是我之前的所有面试中问问题最有水平最细致的面试官了,对他印象挺不错的。

秋招内推三面(电话面试,大约40分钟):

1. 蓝桥杯是什么东西?(这个问题有点尴尬哈)

2. 能说一下你在你们队伍的三个人中是主要负责什么的吗,你们比赛的时候怎么配合的?此处吹了一波尚神,不过由于尚神还在盘古实习,就没提他的名字,只说了某队友。

3. 算法题,正则表达式的匹配,经典dp问题,开始给了一个指数级的搜索算法,后来说了dp,但是我的dp功力还是不太行,有几个细节问题没说好。

4. topk问题,给你一个文件,里面每一行都有一个在一定范围内的自然数,文件很大,比内存要大,如何求前百分之一的数字的最小值,也就是第百分之一大的值。开始给了多路归并的想法,分割文件后每个文件取前百分之一,然后reduce,但是这个有瑕疵,就是可以构造不符合的数据,然后我提出了再随机化一下。接下来的想法是把文件切分之后分别读取,并且维护一个大小为0.01*n大小的堆进行处理,然后问题是如果0.01*n也比内存大怎么办,最后他提醒了我一下,前面有个条件,数字有范围,恍然大悟,直接桶排序就好了。简直无地自容啊,经验主义害死人,一直考虑topk了。接下来问题是如果数字没有范围,然后文件大小比内存小,怎么做,标准topk问题,两个方案,第一个用堆,第二个类似于快排的那种。

5. 操作系统中不同的进程为什么不能互相访问地址,而线程可以,因为是虚拟地址,进程内得到的地址并不是真正的物理地址,而线程有独立的栈空间但共享堆空间。

6. 共享内存是如何实现的?这个答的不好,我答了shmat族的几个函数的我的自己的理解,也不知道对不对。

7. 说一下I/O多路复用是如何实现能同时监听多个文件描述符的,这个就又把select、poll和epoll的原理和对比讲了一遍。

三面自我感觉是凉了,几个点没答好:dp的细节没考虑好,topk犯了经验主义错误,忽略了一个条件,感觉自己已经和阿里云say goodbye了。

秋招内推四面(视频面试,大约1小时):

1. 聊了聊工作的东西,对于jpeg的一些东西,这个不说了,基本他问的二面都问过了。

2. 对于你工作里用的gpu,你是怎么理解的,你觉得还能完成什么任务,我说了一些gpu的基本构成和优点,然后说了在机器学习上可能会用到,然后他让我说了一下我对机器学习的了解,就大概说了一些比较浅显的东西。

3. C++虚函数的一些东西,我这个面向对象是真的不太行,就说了点多态的东西就没啥说的了。

4. TCP和UDP的区别,然后举个实际的例子说一下应用场景,先说了区别,比较简单,应用的话TCP在传输文件的时候可以,UDP在视频、音频通话的时候应用比较多。

5. 算法题,对于一个二维链表,每个节点有两个指针:next和child,如何能把它展开成一个一维链表,顺序随意,让child都是null,所有节点利用next连接。其实二维链表说白了就是个二叉树,next就是lchild,child就是rchild,我们的目的是把二叉树变成一个单链,所有rchild都是null。开始给的是直接dfs得出dfs顺序,然后直接创建一个链表,但是不能额外开空间,想了一会之后想到了,在dfs的过程中判断一下每个节点的左右孩子是否为空,分情况处理,用一个额外指针维护当前的最尾部的那个节点就可以了,具体代码如下:

//评测题目: 二维链表
struct Node {
    int val;
    Node *next;
    Node *child;
};

Node *last = null;

void dfs(Node *head, Node *father) {
    if(head -> next == null && head -> child == null) {
        if(father -> child != null) {
            head -> next = father -> child;
            father -> child = null;
            dfs(head -> next, head);
        } else {
            last = head;
            return;
        }
    } else if(head -> next == null && head -> child != null) {
        head -> next = head -> child;
        head -> child = null;
        dfs(head -> next, head);
    } else if(head -> next != null && head -> child == null) {
        dfs(head -> next, head);
    } else {
        dfs(head -> next, head);
        last -> next = head -> child;
        head -> child = null;
        dfs(last -> next, last);
    }
}

本来以为三面就凉凉了,结果还是来了四面,挺惊喜的,整个过程也算比较顺利。

原文地址:https://www.cnblogs.com/Torrance/p/9495905.html

时间: 2024-10-09 04:05:12

面试经历之阿里云的相关文章

Java Web架构知识整理——记一次阿里面试经历

惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里的面试机会,于是就试了试. 首先是电话面试,当时正在上班,人多口杂,好不容易找了个没人的地方开始面试.面试的方向是Java Web,面试官很nice,跟朋友一样,一开始问了些比较基础的东西,比如hashmap/hashtable的区别和优缺点,我答得还行,而且对于原理的东西还算讲的比较透彻. Jav

记一次阿里云中间件面试

8月初收到阿里中间件的面试邀请,收到之后很快就进行了第一面. 第一面主要聊了一些java自身的东西 常用的集合比如list,hashmap,set聊这些集合的适用常景和一些底层的实现原理.常用的并发包组件如conurrentHashMap,countdownlatch和这些组件的底层实现,锁有几种等等.后面就聊jvm相关的东西.比如内存布局,GC收集以及调优.类加载机载和一些常用jvm底层指令.后面又问了数据库.网络.操作系统.redis相关的知识.聊完之后面试官指出了我的一些不足之处之后就叫我

阿里云服务器搭建经历

前言 转眼间又到了周五,今天暂时想不到什么可以写的,但是又不能浪费了周五这么难得的机会,不写点东西感觉有点罪过啊~~突然想起来以前给某个小公司做了一个留言管理系统,并且部署在阿里云服务器上.所以当时也是倒腾了一下阿里云服务器的搭建,其中也有一些踩坑的经历,想在这里记录一下,顺便也可以温习一下这个过程,同时也希望能够帮助到其他人,避免重复踩坑.好了,废话不多说,直接开始吧. 原材料: 主要需要安装配置mysql.jdk.tomcat.阿里云服务器我选择的是比较主流的Centos7操作系统,其他感觉

记录一次在阿里云ECS服务器部署验证RocketMQ的经历

==背景== 购买了3台阿里云ECS服务器,上面部署了RocketMQ,用来作为业务后台与平台之间的数据通讯中间件. 部署倒是异常顺利,不过在本地写程序,测试生产和消费数据的时候,出现了一些问题. 耗费了将近1天的时间,终于解决了,记录一下本次排查的经历. ==环境== Linux:CentOS8(阿里云ECS服务器) RocketMQ:4.6.1 ==集群== 节点数:3个 节点1:broker-a(master) 节点2:broker-a(slave),broker-b(master) 节点

大家帮帮忙,阿里云免费测试的黑幕诱导用户消费。亲身经历。

本来所谓的云服务器,就是真实的主机上面,利用虚拟技术,人为地多划分出了多台虚拟主机,按照用户购买的费用,进行分配虚拟主机的内存,CPU,硬盘,网速等的资源动态分配. 云技术被商人捧吹的神乎其神,无非是多台或者更多的虚拟主机合在一起,利用小资源拼成大能量而已,其实利用真实的服务主机,也可以做到这点,只不过是费用高一点而已. 阿里云刚刚推出的时候,其实大多数都不知道怎么回事,然后他们利用免费试用的方式,来吸引一些用户.慢慢使用的用户多起来了,现在他们又免费推出公测活动,来推广与诱导用户付费消费. 利

记录一次阿里云服务器被攻击的经历

  前些天买了阿里云服务器,无奈最近没空登录.安装了tomcat jdk maven mq jenkins 等几个服务后,找了个以前做的项目在上面跑了下,没问题后一周没怎么登录过.然后这几天手机一直收到服务器在异地被登录的消息,想想自己服务器什么也没有,过几天修改下密码就行了吧,结果今天早上又发了条短信,说 服务器 出现了紧急安全事件:挖矿进程. 无语,之后登录上服务器后果然发现cpu占用近乎100%,top命令 查看是哪个进程占用了cpu,之后kill -9 杀死后 过了几秒又重启无奈了啊..

【真实面试经历】我和阿里面试官的一次“邂逅”(附问题详解)

本文的内容都是根据读者投稿的真实面试经历改编而来,首次尝试这种风格的文章,花了几天晚上才总算写完,希望对你有帮助. 本文主要涵盖下面的内容: 分布式商城系统:架构图讲解: 消息队列相关:削峰和解耦: Redis 相关:缓存穿透问题的解决: 一些基础问题: 网络相关:1.浏览器输入 URL 发生了什么? 2.TCP 和 UDP 区别? 3.TCP 如何保证传输可靠性? Java 基础:1. 既然有了字节流,为什么还要有字符流? 2.深拷贝 和 浅拷贝有啥区别呢? 下面是正文! 面试开始,坐在我前面

【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OSS(https://www.aliyun.com/product/oss) 4.HTTPS(http://baike.baidu.com/view/14121.htm) 阅读目录结构 引: 一.准备工作 二.整体功能结构 三.具体实现步骤 四.关键点和问题处理 五.延伸与扩展 六.总结与思考 引:

阿里云喻义:十年牧码,从码农走向工程师的进化之路

摘要: 有人会问,码农和工程师有区别吗?有什么区别?相信每个人都有不同的理解. "你敲下的每一行代码,你想过他会如何在计算机上运行吗?你想过你的这一行代码会产生多少cache miss吗?你想过你的这段代码分支预测的概率是多大?你想过你这段代码是否适合在逻辑核上运行?你真的想过吗?" 给我们抛出这些问题的是刘廷伟,阿里云高级技术专家,花名喻义. 有人会问,码农和工程师有区别吗?有什么区别?相信每个人都有不同的理解. "你敲下的每一行代码,你想过他会如何在计算机上运行吗?你想过