一.猫眼娱乐
一面
-
自我介绍 -
项目 -
项目中HBase rowkey 设计 -
讲下快排时间复杂度 -
HashMap
、HashTable
、ConcurrentHashMap
了解嘛? -
HashMap
多线程操作会导致什么问题? -
synchronized
,lock
,它们的区别了解嘛? -
你了解哪些线程池? -
说下JVM 内存区域 -
MySQL
存储引擎的区别? -
索引有哪些,区别是什么?
主键索引: 数据列不允许重复,不允许为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);
创建全文索引
-
索引的基本原理
索引的原理很简单,就是把无序的数据变成有序的查询
-
把创建了索引的列的内容进行排序 -
对排序结果生成倒排表 -
在倒排表内容上拼上数据地址链 -
在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据
-
事务的隔离级别有哪些? -
前缀索引,覆盖索引了解么?
二面
-
项目 -
flume
和kafka
的区别? -
kafka
负载均衡怎么实现的? -
kafka
如何分区的? -
offset
怎么理解? -
如果只有一个消费者, kafka
有必要嘛,直接用flume
不行嘛? -
mapreduce
二次排序? -
冒泡、插入排序的区别,哪个更块? -
快排时间复杂度? -
判断链表是否有环,写一下,如果快指针比慢指针多走两步呢?三步呢?能追上嘛? -
实现一个类,每次可以取栈里面的最大值(剑指offer 有个最小值栈,同理)
总结:猫眼问的偏数据库多一点,对计算机基础和框架应用要求都还蛮高的。
二.大华股份
一面(省略自我介绍和项目介绍)
-
static
变量和成员变量? -
static
和abstract
能同时用吗? -
static
修饰的方法能调用非ststic
方法吗? -
int
和Integer
的区别?int
初始默认值多少?Integer
呢? -
String
和StringBuffer
StringBuilder
有哪些区别? -
设计模式了解吗? -
gc 机制了解多少? -
collection
和collections
区别? -
concurrentHashMap
是如何实现的?采用分段锁实现的,怎么分段的? -
join on
字段后面的变量 和 where 后面的变量有什么区别? -
row_number()
和rank()
有什么区别?
二面
-
linux
中使用什么命令查看TCP
连接状态 -
HBase
集群的HMaster
是怎么选择的? -
HDFS
和HBase
底层原理了解吗?(讲了hdfs
的 写流程)先写日志,还是先写到节点,为什么要三个全部写完,才从确认队列删除? -
自旋锁,和可重入锁了解吗? -
volatile
关键字底层的实现了解吗? -
jvm
运行时区域有了解吗? -
缓存一致性哈希了解吗? -
在项目中遇到什么问题?(我说了数据倾斜,接着问了下怎么解决的) -
数据倾斜是什么原因引起的,key 不均匀分布引起的,你的key 是什么?最后怎么解决的? -
MySQL
中乐观锁和悲观锁了解嘛?
总结:大华股份非常注重 Java 基础,大数据框架问得较少。
三.有赞
一面
-
ArrayList
和LinkedList
区别? -
TOP N 问题(10万个数据,能够全部读到内存,如何获取第 K 大的数) -
20 亿数据存在硬盘,内存只有1G,如何找到中位数? (思路:根据32位的最高位不同,0或1,分成2个文件,去数据较多的那个文件中去取) -
多线程的 Synchoronized
与原生的Lock
的区别? -
Synchoronized
的锁升级过程?为什么要使用 轻量级锁? -
垃圾回收机制中, GCROOTS
有哪些?
-
虚拟机(栈帧中的本地变量表)中引用的对象 -
方法区中类静态属性引用的对象 -
方法区中常量引用的对象 -
本地方法栈中JNI(即一般说的native方法)中引用的对象
-
类加载的过程?
-
加载:根据查找路径找到相应的 class 文件然后导入; -
验证:检查加载的 class 文件的正确性; -
准备:给类中的静态变量分配内存空间; -
解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址; -
初始化:对静态变量和静态代码块执行初始化工作。
-
使用 Linux
的netstat
命令检查Tcp 连接状态中, 为什么要有TIMEWAIT
状态? -
为什么是等待 2MSL 的时间? -
为什么握手是 3 次,而挥手是4次? -
Spark rdd
全称?如何体现弹性? -
宽依赖、窄依赖如何划分? -
GroupByKey
与ReduceByKey
区别是什么? -
rowKey 设计原则有哪些? -
布隆过滤器了解嘛? -
HBase
调优了解嘛?(说了加盐,加盐函数怎么设计)(控制storeFile 的分裂的参数) -
HBase
的读的原理? -
Hadoop
体系的架构了解嘛?(说了HA 的高可用架构) -
为什么 Zookeeper
要使用 3 台,而不是 2 台? -
一个 JVM 最多可以跑多少个线程?(-xxs,-xxm JVM 调优参数有了解嘛) -
快速排序?
二面
-
你不是计算机专业,为什么想要转到计算机领域,为什么想要做大数据? -
项目的框架使用什么,遇到过什么难点吗?(自学自实现的Spark电商小项目) -
项目中Java后端是用什么架构做的,谈谈对Spring的理解?AOP、IOC、动态代理的常用接口?(后端不太会) -
ArrayList
和LinkedList
的区别;hashmap
原理,hashmap
线程安全怎么解决;hash
冲突; -
Synchronized
和ReentrantLock
的区别;Synchronized
是否可重入。 -
java线程池有什么用处和优点,创建线程池的参数有哪些?参数中的阻塞队列是什么? -
在java中写过Socket吗?(我没写过) -
mysql的引擎 innodb
和myisam
的区别;索引的数据结构(B树和B+树);联合索引的最左匹配原则(索引失效)? -
spark
和hive
的区别? -
数据倾斜是什么?一般怎么解决? -
手写代码: 二分查找有序数组中大于等于target的第一个位置
总结:有赞的笔试不怎么难,都是牛客网原题。面试会问的比较深入,要求候选人对技术原理要非常清晰。
四.信也科技
一面
-
说项目:1)项目架构、2)项目中的工作职责、3)项目自己负责的代码逻辑 -
在 HBase 上能跑 sql 吗?是列式存储数据库? -
HBase rowkey 设计原则了解吗?你这个项目中 rowkey 是怎么设计的? -
A join B 表,(A 3 条记录,B 4 条记录),返回最少多少行,最多多少行? -
MapReduce
中的map join
和Reduce join
了解吗? -
MR程序中的 map 数 和 reduce 数如何确定? -
HDFS
上存储文件的格式有哪些? -
shell
中的$? $1
什么意思? -
数据建模了解嘛? -
事实表和维度表区别是什么? -
数据分层有哪些? -
数据呈现有哪些?
信也科技是一家金融科技公司,问的数据库偏多一点,同时要了解
shell
脚本编程
四.若干小公司总结
-
不是这个专业得为什么要转计算机行业 -
操作系统了解嘛?(不了解) -
计算机网络协议分层了解嘛? -
TCP 的报头包含哪些东西,了解嘛? -
TCP 的四次挥手了解嘛?(使用在哪些场景) -
DNS 解析过程了解嘛? -
数据库原理说一说? -
SQL 语句优化考虑过嘛? -
最多能创建多少个 TCP 连接? -
说一说快速排序和堆排序的原理?(实现过程) -
B+树了解嘛?(数据存在哪儿) -
面向对象的三大特性? -
final
、finalize
、finally
三个关键字的区别? -
在 Java 中如何创建一个全局常量? -
并发的 Synchronized
、volatile
的 关键字了解嘛? -
Synchronized
的锁升级的过程是怎么样的? -
在 Synchronized
修饰的方法 加一个static
关键字,会怎么样? -
i++
指令有哪些步骤? -
Objec 类中的 hashCode( )
、equals
方法有什么联系,使用在哪些场景? -
ArrayList
底层实现原理?在什么时候扩容? -
HashMap
在什么时候扩容? -
虚拟机的运行时区域了解嘛? -
本地方法栈会发生 GC 嘛? -
类的加载机制了解嘛? -
类的加载过程了解嘛? -
垃圾回收算法了解哪些?分别和哪些垃圾收集器对应? -
使用过 Spring
这些框架嘛? -
说说 HDFS
的读写原理? -
yarn
资源调度策略了解嘛? -
yarn
资源调度过程? -
HBase
底层了解嘛? -
HBase rowKey
设计原则有哪些?(为甚么要保证随机性,避免数据倾斜) -
WAL LOG
有什么作用?可以保存多久?
总结
总的来说,面试需要你多尝试,千万不要等到感觉自己准备非常充分后再去面试,知识是学不完的,机会也容易流失,早就是优势。然后,你在每一次面试后一定要记得面试复盘,梳理自己知识漏洞。通过不断的总结,你才能成为强者!
End
你好,我是小林!非科班双一流硕士,CAE仿真方向转行大数据,现杭州某大厂大数据工程师! 我可以给你提供最全的【大数据学习路线】;帮助你搭建大数据知识体系,从入门到精通;亲自指导你大数据工程师面试的简历该如何撰写!