「Offer 驾到,掘友接招!我正在参与2022春招系列活动-经验复盘,点击查看 活动详情
人家的面经
作者:杨超越救救孩子啊 链接:www.nowcoder.com/discuss/170… 来源:牛客网
早上九点的面试,投的南京的岗位 一面: 一面面试官人很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:公交车人数最高的时间段 算法:二叉树层次遍历 一个男孩,一个女孩的概率问题 瓶盖换水问题 维度建模步骤