滴滴一面,大数据开发实习生(27分钟)

    作者:菜🐔也要有梦
    链接:https://www.nowcoder.com/discuss/186176?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    晚上7.13分,我接到了面试电话,没想到是晚上,面试官大概26岁左右,不是很冷酷的,也不是很热情,电话声音有点小,中途我还几次请他重复下问题,心慌,在面滴滴之前,我面试过几家小公司,除了第一次出校门面试,其他的基本上都是谈笑风生,这次是真的紧张,四个原因:一是没想到这个点打电话过来,二是声音有点小我听不清,三是我很难判断面试官的心态,四,我算法才开始看。

    自我介绍
    面试官在确认是我本人之后,让我介绍一下自己,

    我:大哥你好,我是**学校的大三的学生,我的主要技能是Java、Linux、Python、MySQL,平时Java是第一语言,Python用得比较多,Liunx也比较熟悉……(我TM怎么会叫面试官叫大哥…..说完就后悔了)

    面试官:(打断)哦…你说的是你简历上面得技能对吧?好,我们现在开始面试,不要紧张哈,知道什么说什么就好了。

    我之前的几场面试基本上是这么说的:

    面试官你好,我是**学校大三的学生,我今天过来是面试您公司的大数据开发实习生的职位,我的性格就不用介绍,我这个状态您就看得出来(无敌超级自信),我做过的项目主要就是简历上那几个具体地我都写得很清楚,然后我对Java、Liunx、MySQ比较熟悉但不是精通,Python也用得很多,嗯…,我的介绍大概就是这些,谢谢您。

    项目介绍
    我在简历上一共写了三个项目,分别是基于FPGA的智能芯片开发(Linux、FPGA)、基于大数据的综合体区别研究(Python爬虫)、物流信息共享平台(SSM Vue BootStap 项目部署 域名解析)。

    面试官:我看你简历上有几个项目,你讲一下吧

    我:好,那我讲一下最后那个Web项目吧,去年的时候我同学参加全国物流设计大赛,然后需要在设计的基础上开发一个Web系统,然后我主要负责开发系统,用到的技术是SSM、Vue、BootStrap,然后我自己买了华为的服务器和域名,然后我还完成了项目部署和域名解析。

    面试官:那你这个开发过程中有没有遇到什么问题?你开发的时候版本控制是用的Git对吧?有没有用什么高级的命令还是就自己平时pull/push比较多?

    我:嗯..因为上学期我们专业开了一门JavaEE课,然后我对三大框架还是比较熟悉的,后台开发的时候很顺利没有什么问题(其实问题还是有的,那会儿慌,少一事不如多一事,现在后悔没深入讲),主要是前端Vue在数据绑定的时候有点问题,这个系统我是前后端分离开发的。额..对,开发的时候我是用的Git版本控制,然后项目和平时的一些代码都是同步到GitHub和Coding上面的,高级命令的话…主要还是平时自己用,跟同学一起做项目的时候高级命令也用过,不过比较少。

    面试官:哦….好,那你在开发的时候,有没有关注jvm的内存啊,比如一些参数啊

    我:jvm内存我倒是没关注,我当时是用nomo命令看了个linux服务器上的CPU啊,IO啊,还有内存的情况。

    面试官: 嗯对,这样也可以

    项目主要就说了这一个,爬虫和FPGA的面试没有提。

    基本功考察
    这个环节,面试官主要是围绕我写的博客来问的,简历上给了自己的博客和GitHub的地址。从3月以来,我就疯狂写博客,其实也就是自己的笔记和一些采坑记录,都是写给自己看的。光4月份,写了46篇,当然质量差的也是有的,不过无所谓啦,就是平时当笔记本使。

    面试官:你这些博客都是自己写的吧,还是从别人那里档过来的?

    我:博客基本上都是我自己写的,少数是由于我个人学习方法的原因,因为有时候看书比较枯燥嘛,我喜欢看视频,然后也经常看别人的博客,很多博客在一块比较,然后我自己再总结的。

    面试官:我看你这里写了一篇关于红黑树的,你讲讲红黑树是怎么回事?(红黑树那一篇是我前天开始写的,写到一半又去写平衡树,我之前数据结构学得很差,然后也是这几天才开始看的,之前一直在看别的。)

    我:红黑树这个是我前天写的,我就简单讲一下吧,红黑树它首先是一个二叉搜索树,然后也是一个平衡树,然后它本身也是带有颜色属性的,除了二叉搜索树和平衡树以外,它还具有一些特点,主要是根节点是黑色的,不存在两个相邻的红色的节点…..

    面试官:嗯…那你讲下,平衡树是怎么自动平衡的?

    我:他这个平衡首先是根据平衡树的性质嘛,根节点深度的差的绝对值大于1的时候,就需要通过左旋、右旋来调整、红黑树的话,还要看颜色属性。

    面试官:嗯,Kafka你了解吧,你讲一下Kfaka

    我:(卧槽,你打电话过来前10分钟我才开始学Kafka),好,Kafka底层实际上是基于消息队列的,然后主要是用于数据缓存、和即时性的这种日志提取嘛…..(胡说八道…..),额,Kafka我刚刚才开始学…

    面试官:好,没事,你讲讲hbase吧

    我:(hbase是我学的比较浅的地方)hbase的产生背景主要是因为hive它速度很慢,时效性不高,而hbase这种框架的话,它本身这种查询和更新的速度时比较快的,然后它是一种面向列一种横向扩展的结构。

    面试官: 那hbase为什么快,hive为什么慢,你详细说一下

    我:hive之所以慢是因为它实际上是通过mapreduce来实现的,而mapreduce它本身就说很慢的,它主要需要经过切面、map、排序、合并还有归并这几个过程,而且它还有资源浪费的问题,比如map和reduce不是同时进行的,hbase的话,它不是通过mapreduce来是实现的,它是一种单独的查询更新的框架..

    面试官:框架?

    我:没有没有,说错了(怂)

    面试官:既然mapreduce这么慢,为什么还有这么多人用它?

    我:嗯..实际上现在很多公司都在用Spark、Flink这些,然后mapreduce的话用来做离线分析还是可以的,毕竟对时间的要求不是很高。

    面试官:RPC协议你懂对吧?你讲讲什么是RPC协议,怎么实现的?

    我:RPC协议是HDFS中节点之间的通信协议,简单来讲就说在一台机器上面调用另机器上的程序,它主要是通过Java的序列化和反序列化来实现的,因为不同节点的信息主要是保存在java对象里面的嘛,序列化就是把java文件转化成字节的形式通过保存下来,然后通过网络发送到另一台机器上面。

    面试官:嗯,好。我考你个linux命令哈,怎么把一台服务器上的文件复制到另一台文件上?

    我:(之前在做hadoo的时候,我都是用的伪分布式,集群我没搭,我觉得没必要,所以这个命令我也没用过,不过我还是知道的)这个是通过ssh来是实现的嘛,嗯..就是那个scp命令。

    面试官:嗯,好。java虚拟机内存管理,你大致讲讲

    我:好!(自信),java虚拟机内存主要是虚拟机栈、堆、本地方法栈、方法区、程序计数器这六个部分。

    面试官:再讲讲堆和栈主要有哪些区别,用来存放什么东西?

    我:栈主要是用来存放一些基本类型的数据还有引用,堆是用来存放实例化的对象还有数组,另外GC垃圾回收也是在这一块。

    面试官:嗯,好。我看你博客上面写了==和equals的区别,你讲讲

    我:好(自信),equals本质上就说==,只不过像String还有Inetger这些类对原来的方法进行了重写,然后==是对象的地址和基本类型的值,equals的话对于普通对象,是比较地址的,然后那些没有重写它原来的方法的对象是比较值的(这个地方,我表达得有点问题,当时面试官就让重复说了一遍)

    面试官:嗯,好,那你有没有看过什么源码?

    我:(心好痛,我真的没看过,直接说没看过也不好)嗯…源码的话我之前看过Spring的源码,嗯…就说ioc切面那一块,还有平时在github上面也有看一些小项目的源码。另外,就bilibili的源码我也看过一点(尬笑)

    面试官:嗯..你讲一下sping ioc是怎么回事?

    我:好,我组织下语言哈,嗯…在没有ioc之前,我们如果要监控一个类里面的变量的情况,或者做事务处理,就必须得在那个被监控的类里面写代码,在有了ioc切面类以后,我们就可以单独写一个类来实现这种方法,它具体的细节是封装在底层的,我们不用关注。

    面试官:那它怎么就实现了这种监控的呢?或者说怎么配置的?

    我:它的配置是通过注解来实现的,然后好像也可以在XML文件里配置吧,然后它主要是由那5个方法来是实现的,也就是before、after、finaly、还有一个抛出异常的方法。

    面试官:嗯,好。

    谈实习时间
    面试官:这个实习,你大概能实习多长时间,什么时候可以开始?

    我:开始的话,6月份我就放假了,整个暑假都行,然后下个学期我还有一个月的课,当然对我来说,这次实习是最终要的,我这边时间的问题可以自己想办法解决的,因为我们大四的相对来说都是理论吧,没什么技能的东西

    面试官:也就是说整个大四都是可以实习的吧

    我:是的是的

    谈兴趣
    面试官:关于互联网这一块,你对哪方面比较感兴趣?为什么感兴趣?

    我:兴趣的话,我对linux这种命令行的交互很感兴趣,然后物联网和云计算我很感兴趣,因为现在我们国家虽然说是信息化时代,但是我绝对信息化还是没有普及起来,享受这种智能硬件的人还是比较少的,像扫地机器人这种,用的人就不多啊,如果我们的研发技术上去了,研发成本就低了,那么信息化智能的普及才会更广泛。云计算的话,我平时喜欢自己买服务器,像腾讯云啊华为云这种,平时就搭博客搭*的梯子、科学上网这种。

    面试官:那你讲讲云计算是什么?

    我:云计算的话,我觉得它的关键字是虚拟和服务的这种概念

    面试官:什么是虚拟,你讲讲

    我:虚拟,让我讲我肯定讲不好,这么说吧,我们装的虚拟机和虚拟主机都是虚拟啊

    面试官:嗯,好,你的情况我基本上都了解了,面试到此结束

    我:好,谢谢你(想问多长时间有结果,没敢问)

    总结
    多谢面试官手下留情,第一算法没怎么问,第二没有问得很深
    这次是真的慌,底气不足,还是准备得不够,该表现的时候没有深入地介绍一些技术细节
    简历上写的东西,真的需要好好看,面试官主要是围绕简历来问的
    面试官,有两个项目没有问,包括相关的知识也没问,可能不在他的技术栈内
    整个过程,感觉一秒钟都没歇过,涉及的广度达到了我知识面的85%,我还是太菜了