1
笔者的面经在牛客网上:
https://www.nowcoder.com/discuss/146733?toCommentId=2427869
在这里只是作为一个过来人做一个自己准备面试的过程,大家都可以比我做的更好。(注:由于笔者没有进行很多的面试所以总结难免有过拟合的现象,但是笔者同时也研究了牛客上很多的大数据的面经,在这里仅作为参考)
总的来说现在的一些互联网公司越来越注重面试者的基本素质,不会MyBatis可以,不会redis可以但是基础不好是不行的。早些年国外的一些大厂的面试就只考察面试者算法相关的知识点了,到了这些年国内的大厂也争相模仿,就连一些中小型企业也有此趋势。大家在
学校所接触到的那一套计算机的培养方案是如此的重要,但是往往这些朴素重要的东西我们总是选择忽略它(当然也包括笔者)。我们平常学的一些框架,除了一些流程之外基本上就是一些工具的使用,从这一点来看如何使用Spring整合网站开发与如何使用eclipse进行
编程没有区别。无论是Java开发还是大数据开发在面试的时候都会有一些重叠的部分,数据结构算法,计算机网络基础,操作系统基础,Java语言的基础知识,数据库基础知识,Linux基本操作等。而这些在实习的面试中是重中之重体现一个人的潜力。还有就是我们可以
经常去牛客网看看大佬的面经,多看几份避免过拟合。
下面先讲下Java的主要复习部分
JMM(Java内存模型),来源博客与《深入理解Java虚拟机》。
Java垃圾回收机制,来源博客与《深入理解Java虚拟机》。
Java集合框架与背后的数据结构,最好能够谈到算法与调优。
Java高并发相关,一些关键字的底层实现与他们的区别,线程池相关,来源博客与《深入理解Java虚拟机》,马士兵老师的直播视频。
设计模式相关,这个可以结合JavaWEB相关的知识点来复习。Spring(IOC是工厂模式,AOP是动态代理),过滤器是责任链模式,RequestWapper是装饰者模式(这个与静态代理十分相似),监听器是观察者模式,当然Servlet本身是单例模式。够了。
其中还有一些零散的知识点请买一本宝典练习,或者是在牛客练习。
数据库相关
首先的会写SQL,练习题在牛客上(66句SQL)。
主要是事务,隔离级别,索引相关。主要是《高性能Mysql》上面第一章和索引优化相关的章节。读完这个也就知道了存储引擎与索引的一些相关知识,足以应对一般的技术面试。
数据结构和算法
如果现在没时间了,可以看看排序相关的。如果你有时间那么就开始你的《程序员代码面试指南》|《剑指Offer》吧。过程虐心,谁练谁知道。最好知道他们的时空复杂度。
计算机网络与操作系统请翻看大学课本。(TCP/IP,三次握手四次挥手,段页式存储,缺页中断算法LUR都是常考)。
最后你也许可以看看吴军老师的《数学之美》,在面试中字里行间中透露出你对复杂度的敏感,对优化的追求,与你对IT更加深入的理解。有了这一点就不会在面试场上尬聊无话可说了。对于面试来说这至关重要。
其他的知识可以了解都是加分项(对于实习来说)。重点是掌握原理。
当然一些总结也会在笔者的博客中找到,大家也可以参考。
到此结束,欢迎大家批评。
————————————————
版权声明:本文为CSDN博主「RDeduction」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34993631/article/details/84846582
2 实习|滴滴一面,大数据开发实习生(27分钟),非常详细的面经
牛客网
已认证的官方帐号
108 人赞同了该文章
作者:Vegetable. me
链接:https://www.nowcoder.com/discuss/186176
来源:牛客网
晚上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%,我还是太菜了
实习 | 大数据开发实习面经
牛客网
已认证的官方帐号
20 人赞同了该文章
作者:Recursion7
链接:https://www.nowcoder.com/discuss/146733
来源:牛客网
lz三本狗,大佬请绕行。昨天,去面试了北京微播易科技(一家计算广告公司)的大数据开发实习岗下面就聊一下当时的面试情况。
背景:由于很早受到牛客网的影响所以深知实习岗公司会更加看重一个学生的基础能力。再加上lz经常在得到App上面听吴军老师的《谷歌方法论》更加意识到了程序员之间的差别是量级上的差别。所以在平时的准备上面更加偏向于一些基础的知识与原理,虽然说面的是大数据的岗但是lz也只学了一个月只能够完成离线分析技术栈的的搭建与原理的讲解,在比较细微的地方就gg了。但庆幸的是微播易这家公司是注重基础的。
开始:前天下午正在宿舍的里面安逸的复习这突然接到了Boss直聘上的一条消息。
HR:“你的数据结构和算法学的怎么样?”
LZ:(由于基本上把左神那本代码面试指南的前400页练了一遍当然有些过难先放过了,过程比较痛苦谁练谁知道)“基本的排序,二叉树的各种遍历,简单的动态规划,链表的操作都能够编程实现”
HR:OK,你明天上午11:00来吧
虽然没有任何防备,但是这一次我想试试。
一轮面试
- 讲一下Java中的集合,从ArrayList一直讲到ConcurrentHashMap,其中包括底层数据结构,扩容,并发问题。lz也最后谈到了红黑树以及复杂度与并发中CAS算法。
- 讲一下你的JavaWEB项目,重点就提了一下Lucene与自己手写的皮尔逊相关系数的推荐算法,最后指出了推荐算法的复杂度为O(n^3)以及lz后期改进的基于SparkMLlib的ALS的推荐系统。但是面试官不是搞机器学习的所以我也没有给他串讲背后理论上的保障。(lz学的机器学习没有展现出来)。
- 手撕快排之后lz又谈到了工业界常用的三项切分算法,并且写出了复杂度可以降到O(N(H-1))其中H为香农提出的信息熵。谈笑风生一段。
- 前k大,好吧,是堆排。画图解释堆排,堆的构造下沉操作,这次没让写代码。谈笑风生一段。
- 基于大量数据的前k大,lz当时的反应这肯定得多线程+分布式。最后扯到了MR的思想归并排序。其实后来想了下赛道比马问题的模型解决这个问题更为合适。
- 问了一些比较杂的问题,谈笑风生一段,从安迪比尔定律聊到阿姆达尔法则。面试官起身激动的和我握手。
二轮面试
面试官长得略帅,是这里的数据开发总监。这时候已经开始吃午饭了,老哥很nice直接请我吃了公司的自助,谈笑风生之后进入正式的面试。
- 你给我讲讲数据库的索引。
- 首先说不同的存储引擎的索引是不同的。然后谈到了InnoBD与ISAM的区别。然后画图并且解释,然后谈到了复杂度然后谈到了索引与二叉搜索树与二分查找的关系。时间复杂度。最后谈到了HBase中实现高性能的LSM树。
- 然后谈到事务的实现方式MVCC,谈笑风生。
- 最后是索引的优化与失效,《高性能MySQL》中独立的列。
- 谈一下索引的页,我谈到了索引随机化产生的页分裂的问题。(其实这些知识都在《高性能MySQL中出现过》)。
最后,lz问了公司的业务逻辑与日常生活。面试官点头yes。他提到了以后进公司每个人都有自己负责的一块内容而不是干杂活,这一点我很赞同。
HR面
谈笑风生。
今天下午正式实习offer。
总结,虽然这不是大厂但是很注重基础的尤其是实习。大家加油。
17.8.28携程大数据分析面经(已收到offer)
作者:求给一个offer
链接:https://www.nowcoder.com/discuss/35813?type=0&order=0&pos=11&page=1
来源:牛客网
分享一波面筋,8月28号面的,从下午2:00面到了下午6:30,总共5轮,前面两面是技术面,当场写sql查询语句(面试官现场报一张表,然后我就写,写的不好,在他的逼迫下,还是写了出来),大概40分钟。然后就是等二轮了,二面的时候来了一个做数据挖掘的面试官,先问了随机森林,然后问数据清洗等。然后写sql(这个题比第一轮的简单),大概20分钟。第三面是一个技术的boss进来,然后谈了下人生规划,说数据分析分两个方向,一个是技术分析,一个是业务分析。他觉得我不适合做技术分析,问我愿不愿意做业务分析,如果愿意就安排下一轮面试官进来。感觉意思是:要是不的话我就可以直接滚蛋了。然后我说好吧。过了十几分钟,两个业务的pm进来,二对一开始面试,主要是问我给我一个实际场景,怎么分析数据,怎么提取数据特征这种,另外还问一些我之前的工作经历吧,大概面了30分钟。面完我又等了十分钟吧,五面面试官进来了。进来他说:我其他同事对你挺满意的,我没什么好问的,我这会给你过,然后开始和我拉职业规划,然后让我考虑清楚接不接受业务分析,后面问我有啥要问他的。我就直接问了他:什么时候会给offer呢。他说:我这没问题,明后天让hr给你发offer。从携程出来已经6:30了。等候的时候有hr小姐姐进来给我送水送吃的,而且hr小姐姐真的特别好,面试的boss也都没有特别为难,携程环境还是很高大上的。今天上午刚收到offer。
======================================
更新一波,已经收到了offer,更新一个大家都关心的实习的问题。因为撸主是海外研究生,所以12月就能拿到毕业证,问了hr,说是拿到毕业证就可以转正了。hr说这个就是正式的校招offer,但是有个问题,实习能不能过,个人觉得要是实习也能被劝退,那可能也不适合公司吧。另外,携程实习可以抵试用期。
18.11.17分享一个大数据的面经
作者:Commando20180403011197
链接:https://www.nowcoder.com/discuss/142963
来源:牛客网
头条二面:面的计算机基础:
上来手撕,剑指原题,两个栈实现一个队列。
问了一下转专业的经历。
讲个简历的项目。
操作系统中的进程和线程的区别。
JVM的内存模型说一下,堆,栈,永久区,GC。
Java的多线程。
作者:Commando20180403011197
链接:https://www.nowcoder.com/discuss/142963
来源:牛客网
美团一面:基础
讲讲项目
ava基础
HTTP和TCP
写俩算法,可以用IDE。都是超简单的,有一个台阶,还有一个m的n次幂,自己写个测试试一下
写个sql
mysql的索引,如何实现的,何时失效,聚簇索引和非聚簇索引,B+树
写个单例,懒汉饿汉。
处理数据倾斜
三面
讲项目
HTTP,TCP
操作系统的进程与线程
Java多线程,线程池
阿里一面: 这个面试官是个做算法的
说个项目
Java基础,说说容器
多线程,线程池
java的序列化方式,hadoop的序列化方式,Avro,parquet,transient关键字
搜索:大数据分析面经到