Loading...
墨滴

小林玩大数据

2021/04/27  阅读:47  主题:姹紫

小林秋招大数据面试题汇总(下)

一.猫眼娱乐

一面

  1. 自我介绍
  2. 项目
  3. 项目中HBase rowkey 设计
  4. 讲下快排时间复杂度
  5. HashMapHashTableConcurrentHashMap了解嘛?
  6. HashMap 多线程操作会导致什么问题?
  7. synchronized,lock,它们的区别了解嘛?
  8. 你了解哪些线程池?
  9. 说下JVM 内存区域
  10. MySQL 存储引擎的区别?
  11. 索引有哪些,区别是什么?

主键索引: 数据列不允许重复,不允许为NULL,一个表只能有一个主键。

唯一索引: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。

  • 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引
  • 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引

普通索引: 基本的索引类型,没有唯一性的限制,允许为NULL值。

  • 可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引
  • 可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

全文索引: 是目前搜索引擎使用的一种关键技术。

  • 可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引
  1. 索引的基本原理

索引的原理很简单,就是把无序的数据变成有序的查询

  • 把创建了索引的列的内容进行排序
  • 对排序结果生成倒排表
  • 在倒排表内容上拼上数据地址链
  • 在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据
  1. 事务的隔离级别有哪些?
  2. 前缀索引,覆盖索引了解么?

二面

  1. 项目
  2. flumekafka 的区别?
  3. kafka 负载均衡怎么实现的?
  4. kafka 如何分区的?
  5. offset 怎么理解?
  6. 如果只有一个消费者,kafka 有必要嘛,直接用flume不行嘛?
  7. mapreduce 二次排序?
  8. 冒泡、插入排序的区别,哪个更块?
  9. 快排时间复杂度?
  10. 判断链表是否有环,写一下,如果快指针比慢指针多走两步呢?三步呢?能追上嘛?
  11. 实现一个类,每次可以取栈里面的最大值(剑指offer 有个最小值栈,同理)

总结:猫眼问的偏数据库多一点,对计算机基础和框架应用要求都还蛮高的。

二.大华股份

一面(省略自我介绍和项目介绍)

  1. static变量和成员变量?
  2. staticabstract能同时用吗?
  3. static修饰的方法能调用非ststic方法吗?
  4. intInteger的区别?int初始默认值多少?Integer呢?
  5. StringStringBuffer StringBuilder 有哪些区别?
  6. 设计模式了解吗?
  7. gc 机制了解多少?
  8. collectioncollections 区别?
  9. concurrentHashMap 是如何实现的?采用分段锁实现的,怎么分段的?
  10. join on 字段后面的变量 和 where 后面的变量有什么区别?
  11. row_number()rank()有什么区别?

二面

  1. linux 中使用什么命令查看 TCP 连接状态
  2. HBase 集群的 HMaster 是怎么选择的?
  3. HDFSHBase 底层原理了解吗?(讲了 hdfs 的 写流程)先写日志,还是先写到节点,为什么要三个全部写完,才从确认队列删除?
  4. 自旋锁,和可重入锁了解吗?
  5. volatile 关键字底层的实现了解吗?
  6. jvm 运行时区域有了解吗?
  7. 缓存一致性哈希了解吗?
  8. 在项目中遇到什么问题?(我说了数据倾斜,接着问了下怎么解决的)
  9. 数据倾斜是什么原因引起的,key 不均匀分布引起的,你的key 是什么?最后怎么解决的?
  10. MySQL 中乐观锁和悲观锁了解嘛?

总结:大华股份非常注重 Java 基础,大数据框架问得较少。

三.有赞

一面

  1. ArrayListLinkedList 区别?
  2. TOP N 问题(10万个数据,能够全部读到内存,如何获取第 K 大的数)
  3. 20 亿数据存在硬盘,内存只有1G,如何找到中位数? (思路:根据32位的最高位不同,0或1,分成2个文件,去数据较多的那个文件中去取)
  4. 多线程的 Synchoronized 与原生的 Lock 的区别?
  5. Synchoronized 的锁升级过程?为什么要使用 轻量级锁?
  6. 垃圾回收机制中,GCROOTS 有哪些?
  • 虚拟机(栈帧中的本地变量表)中引用的对象
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈中JNI(即一般说的native方法)中引用的对象
  1. 类加载的过程?
  • 加载:根据查找路径找到相应的 class 文件然后导入;
  • 验证:检查加载的 class 文件的正确性;
  • 准备:给类中的静态变量分配内存空间;
  • 解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址;
  • 初始化:对静态变量和静态代码块执行初始化工作。
  1. 使用 Linuxnetstat 命令检查Tcp 连接状态中, 为什么要有 TIMEWAIT 状态?
  2. 为什么是等待 2MSL 的时间?
  3. 为什么握手是 3 次,而挥手是4次?
  4. Spark rdd 全称?如何体现弹性?
  5. 宽依赖、窄依赖如何划分?
  6. GroupByKeyReduceByKey 区别是什么?
  7. rowKey 设计原则有哪些?
  8. 布隆过滤器了解嘛?
  9. HBase 调优了解嘛?(说了加盐,加盐函数怎么设计)(控制storeFile 的分裂的参数)
  10. HBase 的读的原理?
  11. Hadoop 体系的架构了解嘛?(说了HA 的高可用架构)
  12. 为什么 Zookeeper 要使用 3 台,而不是 2 台?
  13. 一个 JVM 最多可以跑多少个线程?(-xxs,-xxm JVM 调优参数有了解嘛)
  14. 快速排序?

二面

  1. 你不是计算机专业,为什么想要转到计算机领域,为什么想要做大数据?
  2. 项目的框架使用什么,遇到过什么难点吗?(自学自实现的Spark电商小项目)
  3. 项目中Java后端是用什么架构做的,谈谈对Spring的理解?AOP、IOC、动态代理的常用接口?(后端不太会)
  4. ArrayListLinkedList的区别;hashmap原理,hashmap线程安全怎么解决;hash冲突;
  5. SynchronizedReentrantLock的区别; Synchronized是否可重入。
  6. java线程池有什么用处和优点,创建线程池的参数有哪些?参数中的阻塞队列是什么?
  7. 在java中写过Socket吗?(我没写过)
  8. mysql的引擎innodbmyisam的区别;索引的数据结构(B树和B+树);联合索引的最左匹配原则(索引失效)?
  9. sparkhive 的区别?
  10. 数据倾斜是什么?一般怎么解决?
  11. 手写代码: 二分查找有序数组中大于等于target的第一个位置

总结:有赞的笔试不怎么难,都是牛客网原题。面试会问的比较深入,要求候选人对技术原理要非常清晰。

四.信也科技

一面

  1. 说项目:1)项目架构、2)项目中的工作职责、3)项目自己负责的代码逻辑
  2. 在 HBase 上能跑 sql 吗?是列式存储数据库?
  3. HBase rowkey 设计原则了解吗?你这个项目中 rowkey 是怎么设计的?
  4. A join B 表,(A 3 条记录,B 4 条记录),返回最少多少行,最多多少行?
  5. MapReduce 中的 map joinReduce join 了解吗?
  6. MR程序中的 map 数 和 reduce 数如何确定?
  7. HDFS 上存储文件的格式有哪些?
  8. shell 中的 $? $1 什么意思?
  9. 数据建模了解嘛?
  10. 事实表和维度表区别是什么?
  11. 数据分层有哪些?
  12. 数据呈现有哪些?

信也科技是一家金融科技公司,问的数据库偏多一点,同时要了解shell脚本编程

四.若干小公司总结

  1. 不是这个专业得为什么要转计算机行业
  2. 操作系统了解嘛?(不了解)
  3. 计算机网络协议分层了解嘛?
  4. TCP 的报头包含哪些东西,了解嘛?
  5. TCP 的四次挥手了解嘛?(使用在哪些场景)
  6. DNS 解析过程了解嘛?
  7. 数据库原理说一说?
  8. SQL 语句优化考虑过嘛?
  9. 最多能创建多少个 TCP 连接?
  10. 说一说快速排序和堆排序的原理?(实现过程)
  11. B+树了解嘛?(数据存在哪儿)
  12. 面向对象的三大特性?
  13. finalfinalizefinally 三个关键字的区别?
  14. 在 Java 中如何创建一个全局常量?
  15. 并发的 Synchronizedvolatile 的 关键字了解嘛?
  16. Synchronized 的锁升级的过程是怎么样的?
  17. Synchronized 修饰的方法 加一个 static关键字,会怎么样?
  18. i++指令有哪些步骤?
  19. Objec 类中的 hashCode( )equals 方法有什么联系,使用在哪些场景?
  20. ArrayList 底层实现原理?在什么时候扩容?
  21. HashMap 在什么时候扩容?
  22. 虚拟机的运行时区域了解嘛?
  23. 本地方法栈会发生 GC 嘛?
  24. 类的加载机制了解嘛?
  25. 类的加载过程了解嘛?
  26. 垃圾回收算法了解哪些?分别和哪些垃圾收集器对应?
  27. 使用过 Spring 这些框架嘛?
  28. 说说 HDFS 的读写原理?
  29. yarn 资源调度策略了解嘛?
  30. yarn 资源调度过程?
  31. HBase 底层了解嘛?
  32. HBase rowKey 设计原则有哪些?(为甚么要保证随机性,避免数据倾斜)
  33. WAL LOG 有什么作用?可以保存多久?

总结

总的来说,面试需要你多尝试,千万不要等到感觉自己准备非常充分后再去面试,知识是学不完的,机会也容易流失,早就是优势。然后,你在每一次面试后一定要记得面试复盘,梳理自己知识漏洞。通过不断的总结,你才能成为强者!

End

你好,我是小林!非科班双一流硕士,CAE仿真方向转行大数据,现杭州某大厂大数据工程师! 我可以给你提供最全的【大数据学习路线】;帮助你搭建大数据知识体系,从入门到精通;亲自指导你大数据工程师面试的简历该如何撰写!

小林玩大数据

2021/04/27  阅读:47  主题:姹紫

作者介绍

小林玩大数据