面试题
-
Java:
- Java散列表,树对应的容器类,hashmap如何解决冲突
- Java实现生产者和消费者的三种方法
- init方法与clinit方法的区别
- Java中的引用
- Java对象的创建过程
- Java中创建子类实例时会创建父类实例?
- Java的类加载机制 为什么会出现锁机制?
- 抽象类和接口的区别
- 双亲委派模型:启动加载器、扩展加载器、应用程序加载器
- 重载与重写
- Java的类型擦除
- 简述Java Object类中的方法有哪些
- char可以存储汉字嘛?
- 抽象类和接口的区别
- 静态分派与动态分派
- HashMap与HashTable的区别
- 什么时候使用HashMap?它有什么特点?
- HashMap的基本原理及内部数据结构
- HashMap的put和get操作
- 简述Java中的深拷贝与浅拷贝,C++中的浅拷贝和深拷贝
- 解释一下static块和static变量的执行顺序
- equals()的重写规则
- Java中如何创建线程?
- JDK1.8新特性
-
JVM:
- JVM内存布局
- JVM垃圾回收机制
- JVM垃圾回收算法
- 哪些对象在老年代?
- 从年轻代到老年代执行的时间以及发生转移的场景
- 为什么存在GC?
- 简单可达性分析
- Minor GC安全检查
- 垃圾回收器
- 引用记数法和可达性算法
- 类加载机制过程
- 双亲委派模型
- 双亲委派机制
-
Java集合:
- 排序算法比较
- Hashmap是线程安全的吗?为什么?
- ArrayList与LinkedList区别
- HashMap、LinkedHashMap和TreeMap
- 冒泡排序的优化以及快排过程及优化
- 红黑树
- JDK7与JDK8中hashmap的区别
- hashmap的初始容量为什么设置为16?
- 平衡二叉树的插入删除操作
-
并发编程:
- 锁分段技术、ConcurrentHashMap、扩容
- Java同步线程有哪些方式?
- volatile 和 synchronized的区别
- 讲一下同步异步(进程和IO)
- synchronized和volatile的区别?
- 线程安全
- 对象的内存布局
- 哪些是线程安全的容器?
- ConcurrentHashMap介绍
- 线程启动start和run
- HashMap为什么线程不安全?
- 简述Java内存模型的happen before原则
- volatile的原理和实现机制 || volatile到底如何保证可见性和禁止指令重排序的?
- volatile关键字的两层语义 || 可见性
- volatile保证原子性吗?
- volatile能保证有序性吗?
-
Zookeeper:
- Dubbo简介及以Zookeeper为注册中心
- Zookeeper的leader选举过程
- 2PC and 3PC
- 简述Zookeeper。。。watcher
- 简介ZAB
- 简述paxos算法
- Zookeeper如何保证数据的一致性?
- 叙述ZAB集群数据同步的过程
- Zookeeper中的ACL
- Zookeeper底层实现数据一致性
- Zookeeper在yarn框架中如何实现避免脑裂的?
-
Kylin:
- 简介Kylin
- Kylin的工作原理
- Kylin的技术框架
- Cube、Cuboid 和 Cube Segment
- Kylin 对维度表的的要求
- Cube的构建过程
- 全量构建和增量构建的区别
- 流式构建原理
-
Hive:
- Hive内部表与外部表的区别
- Hive与传统数据库的区别
- Hiverc文件
- Hive分区
- Hive分区过多有何坏处以及分区时的注意事项
- Hive中复杂数据类型的使用好处与坏处
- hive分桶?
- Hive元数据库是用来做什么的,存储哪些信息?
- 为何不使用Derby作为元数据库?
- Hive什么情况下可以避免进行mapreduce?
- Hive连接?
- Hive MapJoin?
- Hive的sort by, order by, distribute by, cluster by区别?
- Hadoop计算框架特性
- Hive优化常用手段
- 数据倾斜整理(转)
- 使用Hive如何进行抽样查询?
-
Storm:
- Storm的可靠性如何实现?包括spout和bolt两部分
- 怎么提高Storm的并发度?
- Storm如何处理反压机制?
- Storm中的Stream grouping有哪几种方式?
- Storm的组件介绍
- Storm怎么完成对单词的计数?
- 简述Strom的计算结构
-
Spark:
- Spark的运行模式
- RDD是如何容错的?
- Spark和MapReduce的区别
- 说一下Spark的RDD
- 自己实现一个RDD,需要实现哪些函数或者部分?
- MapReduce和Spark的区别
- Spark的Stage是怎么划分的?如何优化?
- 宽依赖与窄依赖区别
- Spark性能调优
- Flink、Storm与Spark Stream的区别(未)
- 说下spark中的transform和action
- RDD、DataFrame和DataSet的区别
- Spark执行任务流程(standalone、yarn)
- Spark的数据容错机制
- Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
- Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper?以及要注意的地方
- driver的功能是什么?
- spark端口
- RDD有哪几种创建方式
- map和flatmap的区别
- Spark的基本工作流程
-
Hadoop:
- MR的Shuffle过程
- Yarn的工作机制,以及MR Job提交运行过程
- MapReduce1的工作机制和过程
- HDFS写入过程
- Fsimage 与 EditLog定义及合并过程
- HDFS读过程
- HDFS简介
- 在向HDFS中写数据的时候,当写某一副本时出错怎么处理?
- namenode的HA实现
- 简述联邦HDFS
- HDFS源码解读--create()
- NameNode高可用中editlog同步的过程
- HDFS写入过程客户端奔溃怎么处理?(租约恢复)
-
kafka:
- kafka介绍
- Kafka与传统消息队列的区别?
- kafka的零拷贝
- kafka消息持久化和顺序读写?
-
网络:
- 简述TCP和UDP的区别
- 七层协议每一层的任务及作用
- 简述http状态码
- 简述http协议与https协议
- 简述SSL协议
- 解析DNS过程
- 三次握手,四次挥手的过程??为什么三握??
网友评论