①人家的面经
作者:杨超越救救孩子啊
链接:https://www.nowcoder.com/discuss/170799
来源:牛客网
早上九点的面试,投的南京的岗位
一面:
一面面试官人很nice,遇到不会的也会安慰我说没关系,
上来先自我介绍,
说下项目,
说说对hadoop的理解,都有哪些组件,分别是干什么的
还了解大数据其他组件嘛?这里我说了下kafka,然后巴拉巴拉,,,
kafka在什么地方需要用到zookeeper
了解HBase吗?
说下spark中的transform和action
为什么spark要把操作分为transform和action
spark中有了RDD,为什么还要有Dataframe和DataSet?
了解函数式编程吗?说下c/c++和scala这种函数式编程语言的区别
Java中抽象类和接口的区别
都有抽象类了为什么还要有接口
了解GC吗?说说
然后写一道编程题,给个字符串,只有(){}[],看看是否是匹配的,
用个栈直接解决了,问下优化,如果遇到右括号,在查看栈顶元素的时候如果不匹配直接返回false
还有什么要问我的吗?
还聊了下他们的团队工作内容,主要对Spark的源码进行修改,还有其他等等
大概是这些内容了。
二面:
二面面试官很严肃的感觉,不像一面面试官那样,比较轻松
上来就聊下项目
项目中kafka怎么使用的
了不了解nginx
给一个日志文件,有用户ID,时间戳,url,用mapreduce如何给出每天每个站点的访问任务
在这个过程可能会出现什么问题?我这里答了会出现数据倾斜,然后问如何解决
数据库都有哪些引擎
数据库的锁了解哪些,说说
应用层协议有哪些
什么场景用TCP,什么场景用UDP
HTTP状态码都有哪些,具体说一下
HTTP长连接和短连接
url和uri的区别
还问了http请求头的一些字段内容
还是上面那个日志,不过现在所有的数据是在数据库中,写条sql语句查询近一个月每天每个站点的访问人数。
有什么要问我的吗
二面很多没答上来,感觉凉了,没想到给我过了,,我现在还在怀疑人家是不是搞错了。。
三面:
三面面试官人也挺好,听声音是个大叔啊哈
首先还是自我介绍
说下项目
平时开发环境是windos还是linux
开发使用什么语言比较多
线程和进程的区别
hashmap的实现
hashmap的loadfactory是干嘛的
hashmap的扩容
为什么每次扩容都是翻倍,增加1.5倍不行吗
扩容的时候为啥不多扩一点,比如4倍
来了道算法题,两个三十六进制字符串的相加
一条直线可以把一个平面分成2个平面,两条直线最多分成4个,问n条直线最多分成几个面
有什么要问我的吗
试着答了一下
1.说说对hadoop的理解,都有哪些组件,分别是干什么的
Hadoop是大数据的组件,由HDFS,MapReduce和Yarn组成,HDFS主要负责数据的存储,MapReduce是作为计算引擎,负责计算,Yarn负责资源调度
2.还了解大数据其他组件嘛?这里我说了下kafka,然后巴拉巴拉,,,
Kafka是一个基于订阅发布模式的高性能、高吞吐的实时消息队列系统,用于实时架构中,实现将实时数据采集的数据进行实时存储,供于SparkStreaming或者Flink等工具实现实时数据消费处理
3.kafka在什么地方需要用到zookeeper
三种情况:
需要用到存储元数据和交换集群信息
解决分布式一致性问题
需要要消费者知道现在那些生产者(对于消费者而言,kafka就是生产者)是可用的。
4.了解HBase吗?
Hbase是一个基于分布式内存和HDFS的按列存储的NoSQL数据库,适合于需要实时的对大量数据进行快速、随机读写访问的场景
5.说下spark中的transform和action
1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD
2,action是得到一个值,或者一个结果(直接将RDD cache到内存中)
6.为什么spark要把操作分为transform和action
因为所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。这样有利于减少内存消耗,提高了执行效率
7.spark中有了RDD,为什么还要有Dataframe和DataSet?
RDD叫做弹性分布式数据集
与RDD类似,DataFrame是一个分布式数据容器,但是DataFrame不是类型安全的。
DataSet是DataFrame API的一个扩展,是Spark最新的数据抽象,结合了RDD和DataFrame的优点
8.了解函数式编程吗?说下c/c++和scala这种函数式编程语言的区别
scala便是函数式编程的一种,函数式编程语法比起面向对象语言更加简洁优化,
9.Java中抽象类和接口的区别
1.接口只能包含抽象方法,抽象类可以包含普通方法。
2.接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
3.接口不包含构造方法,抽象类里可以包含构造方法。
10.都有抽象类了为什么还要有接口
抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
11.了解GC吗?说说
GC:垃圾回收,使用 GC 可以进行垃圾空间释放操作。
GC 是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘 记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动 监测对象是否超过作用域从而达到自动回收内存的目的。
然后写一道编程题,给个字符串,只有(){}[],看看是否是匹配的,
用个栈直接解决了,问下优化,如果遇到右括号,在查看栈顶元素的时候如果不匹配直接返回false
还有什么要问我的吗?
② 字节(data数据中台)实习一面
自我介绍
项目(两个项目都问了)
MR中数据倾斜问题怎么解决
MR 过程中有几次排序过程
sql:公交车人数最高的时间段
算法:二叉树层次遍历
一个男孩,一个女孩的概率问题
瓶盖换水问题
维度建模步骤