大数据开发-数据平台部-开发实习生-面经

    作者:╰☆╮南巷雨落♡
    链接:https://www.nowcoder.com/discuss/687912?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    本人目前准大四,是通过内推进的小破站做实习生,当然,肯定是需要通过正常的面试流程才能拿到offer的。
    我在学校学的是Java后端开发,所以我的简历做出来就是Java后端开发,我本人之前也从来没有参加过实习,所以是一个纯正的小白。
    很幸运,简历这一关正常通过,小破站的HR打电话约面试时间,约好了在第二天的下午4点。
    一面: 按照邮件上的 约定通过牛客网在线面试,如下:

    首先是面试的开场曲,请简单的介绍一下自己,XXX。面试官很和善,也是我后来进来实习的老师,先从Java基础开始聊:
    简单的说一说你所了解的Java语言
    介绍一下自己学习Java的路线
    你了解Java里的集合类么?它是怎么样的一个结构?简单介绍一下
    分别说一下List和Set都有哪些实现类,然后List和Set有什么区别?
    上一个问题回答后:ArrayList和LinkedList的底层原理是什么样的,它们有什么区别,具体的使用场景是什么样的?
    Map有哪些实现类,HashMap为什么是线程不安全的?
    你有没有了解过Java里的多线程,简单说一下;对于死锁问题你是怎么看的,并且解决死锁的方式都有哪些,哪一种相对高效。
    然后是Java高级:
    你刚刚自我介绍说用过Spring框架,简述一下Spring的特点,它都有哪些特性?
    接上一个回答,对于Ioc和AOP两大特性你是怎么理解的
    在回答出Ioc的依赖注入后,简述一下依赖注入的方式,它们有什么具体区别?
    介绍一下AOP的开发原理,和传统的面向对象的开发有什么不同之处,AOP的底层是怎么实现的?
    你的项目里有使用过SSM框架,说一下SpringMVC的底层实现原理。
    SSM和传统的三层架构有什么不同之处,SpringMVC是如何将数据从前台传递到后端的,底层原理是什么?
    之后是数据库:
    看你简历上有使用过mysql对么?mysql的新特性你有了解过么,简述一下。
    mysql的索引有什么作用,它的设计原理是什么
    说一下数据库的隔离级别,以及为什么要遵循三大范式
    会写sql语句么,利用连接查询。
    表A 字段 id、a、b_id 表B 字段id、b、a_id,互相关联,利用分组查询,查询A中的字段a。现场写sql语句
    然后是算法:
    会写算法么?我简单的出两道题
    给定两个排好序(升序)的数组,要求将两个数组合并成一个数组,合并后去除重复元素并按照降序输出。现场写算法代码
    写好后交由面试官审查,我的是写出来了,但并不是最优的解法,然后通过与面试官的交流与指导,他告诉了我最优解。
    给定一个字符串与一个固定单词,统计这个字符串能组成多少个固定单词,输出个数。现场写算法代码
    这个也做出来了,但相对的方式比较繁琐,代码重复量多了一些,需要进行优化,同样也是面试官对我进行了指导与交流,聊的也很热情和投入。
    技术上也就这么多了,最后问我还有什么需要了解和问的么?这个千万不要回答没有然后就结束面试,这样对于对方的印象很不好,表示本人一点也不关心工作。
    哔哩哔哩总部在哪个位置?
    几点上下班?
    加班严重么?
    公司办公环境好么?
    工作压力大么?
    福利待遇怎么样?
    ………………………..
    一面到这里就愉快的结束了,用了将近一个小时,结束后感觉自己欠缺的还有很多东西,因为以上问题也有好多没回答出来,也感觉自己要凉凉。

    二面: 本想着自己凉凉了,过了一天后收到了二面的通知,是通过腾讯会议的方式面试,激动又紧张,也害怕会出差错,所以就赶紧准备,细看细致分析简历和面试方向的知识内容。

    二面的面试官就是我现在入职后的直接Leader。整体说一下,二面我最开始以为是技术性很强的一次面试,然而并不是,实际相关于技术的问题并不多,面试官迟到了十分钟,之后就开始了二面。
    首先还是简单的自我介绍
    我看简历你是学Java的是吧,你在学校是如何学习Java语言的,学习方法和方式是什么?
    那你对大数据了解多少,像Hadoop、Hbase等,把你所了解可以跟我聊一聊。
    那你了解我们这个SRE方向么,它具体是做什么的你知道么?
    那你愿意重新学习一门新的语言么?
    如果需要你学习新的语言,你的学习路线是怎么样的,你会具体怎么去学习会在短时间内得到提升和强化?
    目前我们需要你学习Golang,如果你同意的话,可以告诉我你打算怎么进行实际学习么?通过哪些渠道进行学习,路线是怎么样的。
    做程序员是需要不断进行学习,你平时学习能力怎么样,有没有学习的功底和能力。
    这些问完之后,Leader就直接开始介绍了一下这个方向主要的内容,主要是做什么方向的,还是非常详细的介绍,需要我先了解一个大致我做什么样的工作。Leader介绍完之后说需要给我些资料要我先进行了解和学习,详细的内容入职后会在告知我。听完这句话我就很惊喜,说明我已经通过了Leader的面试,然后我当时直接加了Leader的微信,之后是相互了解认识,发了一些学习资料和链接……
    接下来要做的就是耐心等待HR发送offer,最后附上我的offer吧!以上共享希望能与大家共勉,互利共赢,加油!