0、最近遗留
2、双层桶
3、倒排索引
4、putVal方法消化
一、面试问题
领域 | 已解决问题 | 待解决问题 |
---|---|---|
数据库 | ||
Java | ||
大数据 | ||
系统设计 | 3 | |
1、数据库
1、什么情况会行锁,什么情况会表锁,怎么操作
2、哪些命令可以查看数据聚集度?
3、Binlog数据格式
4、数据库设计:
date user_id bought_A bought_B
1 101 Y N
2 101 N Y
2 102 Y N
3 103 N N
4 103 N Y
4 104 Y Y
求历史数据bought_A='A' and bought_B='B';
2、Java
2.1 基础
2.2 并发
3、HashTable与ConcurrentHashMap的区别?
4、concurrent底层机制?
5、concurrent实践及深入。文章进一步深入 & QA完善。
6、HashMap再迭代一版;底层原理;Concurrent底层原理,为什么会有相应作用,CAS在什么情况下不如
7、线程池什么时候会进入workQueue,什么时候会拒绝?
8、序列号UID含义
9、Java哪些是用乐观锁实现地?
10、哪些关键字跟volatile一样保持可见性
11、多线程如何控制,多线程问题如何定位
Linux后台如何监控,监控工具有哪些
12、多线程生产者与消费者,如何保持数据一致性。
13、多线程搜索问题 & 答案,位置是Java并发(一)-- JUC工具
16、为什么有并发问题,有哪些问题&方案&优劣、底层、应用?
2.3 GC
2、进程与JVM线程控制的关系
3、GC如何调优
4、进程 如何通过GC管理线程
2.4 其他
1、DeleteQueue实现
2、浅拷贝、深拷贝
3、我是如何从零基础拿到第一份实习的(各个时间段的实操经验分享)
3、大数据
1、HDFS读写数据时,通信过程?
2、SQL如何解析到算子,这中间的过程
7、Spark shuffle演化?
3、Task如何被调度,在物理层面?
尤其是无法通过HashPartition实现时?
5、Spark与Hadoop的区别是什么?
4、大数据如何调优
- Spark 实践优化
二、前置
5.Spark中coalesce与repartition的区别
7.map和mapPartitions的区别
29.Spark中Partition的数量由什么决定
45.特别大的数据,怎么发送到excutor中?
三、实践、调优
44.当 Spark 涉及到数据库的操作时,如何减少 Spark 运行中的数据库连接数?使用 foreachPartition 代替 foreach,在 foreachPartition 内获取数据库的连接。
46.Spark调优都做过哪些方面?
40.数据倾斜可能会导致哪些问题,如何监控和排查,在设计之初,要考虑哪些来避免
四、实践
11.Spark Streaming流式统计单词数量代码
38.Spark Streaming实时的数据不丢失的问题
52.Spark Streaming如何保证7*24小时运行机制?
53.Spark Streaming是Exactly-Once吗?
31.Spark Streaming怎么进行监控?
34.Spark Streaming和flink做实时处理的区别
36.Spark Streaming读取kafka数据为什么选择直连方式
41.有一千万条短信,有重复,以文本文件的形式保存,一行一条数据,请用五分钟时间,找出重复出现最多的前10条
9.以下代码会报错吗?如果会怎么解决 val arr = new ArrayList[String]; arr.foreach(println)
44.当 Spark 涉及到数据库的操作时,如何减少 Spark 运行中的数据库连接数?
42.现有一文件,格式如下,请用spark统计每个单词出现的次数
六、其他
15.按照需求使用spark编写以下程序,要求使用scala语言
33.Scala有没有多继承?可以实现多继承么?
30.Scala里面的函数和方法有什么区别
37.离线分析什么时候用SparkCore和SparkSQL
25.Spark 在yarn上运行需要做哪些关键的配置工作?如何kill -个Spark在yarn运行中Application
4、计网
1、为什么用TCP建立连接,而不用HTTP?
2、HTTP 连接过程?
5、操作系统
3、内存状态
4、Linux理解
5.什么叫守护线程,用什么方法实现守护线程
守护线程是为其他线程的运行提供服务的线程。
setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为守护模式,false为用户模式。
6、算法
1、二叉树路径和
2、自动配板–用背包算法予以解决
3、脑图总结
7、系统设计
1、如何设计一个高并发秒杀系统(*2)
2、userid, ip, →城市
3、添加数据倾斜、内存、位图
8、其他
1、写一个脚本自动上传自己的笔记
2、尽量避免与面试官发生对抗
3、面试官:你觉得上轮发挥得发挥怎么样?
二、长期改进
1、源码阅读
要理解设计点、思想、优劣势,这里具体办法可以借鉴耗子叔的。
2、思考:要达究竟,最终能非常清晰
为什么会有数仓,本质原因是什么?跟数据库的区别是什么?为什么有指标?什么是维度?跟指标的关系是什么?
3、问题清单
Java集合比如说HashMap和ConcurrentHashMap我觉得,你最好在平时能去耐心读一下源码,搜一搜相关的博客,最好能知道每个参数为什么设置成这么大?有什么好处?为什么?你会发现不少东西,网上也有很多视频可以去学。
JUC包,毫无疑问的,你得去学,哪怕你平时编程根本不去用,但是你得会,只得知道有这个东西,你至少得知道aba,cas,aqs,unsafe,volatile,sync,常见的各种lock,死锁,线程池参数和如何合理的去设置,你必须明白自旋,阻塞,死锁和它如何去定位,oom如何定位问题,cpu过高如何定位等基本的操作,你可以没有生产调试经验,但不代表你可以不会top,jps,jstack,jmap这些可能会问的东西。以及可能衍生的jmm模型和mesi协议等。
JVM毫无意外,大厂必须问,垃圾回收算法,垃圾收集器,jvm内存模型,每个区域用途,各种oom的种类,jvm调优经验,没有你也要做过,自己去设置启动参数,知道常见参数的含义,类加载过程,双亲委派,什么时候young gc,full gc,各种情况进入老年代的方式,你知道的越多越好,因为吹起来就越自信,举个例子,逃逸分析是什么?markword里面有什么?
Spring,最好能抽空看看源码,最起码bean的生命周期,如何解决循环依赖,父子容器,还有boot的启动流程,事务实现原理,动态代理原理等,你知道越多越好。
Dubbo,因为我用的是dubbo,而且我写了,这个也是高频,写了必须问的,他的设计框架,负载均衡,spi机制,一般顺势会提到zk,选举算法,分布式锁等,一些常见的dubbo问题可以去搜,网上的基本都有。可能会顺带去问cloud的问题,生产没用过不怕,你现在可以自己clone一个项目,最起码,互联娃,你得知道还有这个玩意儿,还有他集成了啥,比如eureka,hystrix,ribbon,feign,zuul这些常规的东西吧,他们做什么的?
Redis,必须会的,我这方便还算懂得多点,可以和面试官大战几个回合吧,应该不至于上来被打趴下,单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型,不要再说常规的5个了,多说几个让你区别其他小哥,包含一些缓存常见的问题击穿、穿透、雪崩、数据一致性等,你必须会,不会基本没戏,一致性hash,布隆过滤器的原理,为此我还去了解了geohash的原理以及google s2的原理,底层数据结构sds和跳表等,你多学点,准没错。
Mysql,事务,锁,索引,b+树,主从这些你必须会
Mq ,我用的rocketmq,你得知道为什么用,重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程,读过源码更佳,更好吹
Netty的话,零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好
算法,建议去刷题,我运气好,简单的算法让我碰到了,一些快排,堆排,二叉树相关的,链表反转,成环,环节点,跳楼梯等常规的简单算法建议刷刷,双指针,dp,递归这些还是多找找感觉,大数据内存有限的场景的统计,有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。
网络,http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。
还有就是一些分布式事务实现,架构实现,比如抢红包,高并发下单等常规的场景设计,你来设计,你怎么去设计?多找一些大牛或者上网自己查,帮你看看有哪些漏洞,有那些解决方案?业界有哪些好的中间件?
三、已解决
1、大数据
1、Bloom Filter
4、Spark 启动流程、处理流程
6、Spark调度系统,Spark启动流程为什么根据shuffle来区分Stage?怎么划分?
8、Spark Core是什么?
DAG作用,如何连起来,为什么根据宽窄依赖切割
2、Java
1、StringBuffer为什么线程安全?
2、CAS(*3)是什么,你有哪些应用
1、强引用、软引用、弱引用、幻象引用等解决的问题是什么?为什么会出现这几个分类?
2、单例模式代码(*15)
3、线程安全的单例模式实现
4、设计模式
17、Java并发迭代一个版本
14、Synchronized底层原理
15、volatile底层原理
3、计网
3、HTTP四类基本操作?
4、状态码
5、端口号数量
6、四次挥手状态转换
3、TCP三次握手、四次挥手问题重新整理。
4、OS
1、进程间通信
2、查看后台进程状态
5、算法
4、K个链表相加,边界条件、最优解