【面试】反馈&优化清单(不断更新中)

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 StreamingExactly-Once吗?
31.Spark Streaming怎么进行监控?
34.Spark Streaming和flink做实时处理的区别
36.Spark Streaming读取kafka数据为什么选择直连方式


41.有一千万条短信,有重复,以文本文件的形式保存,一行一条数据,请用五分钟时间,找出重复出现最多的前109.以下代码会报错吗?如果会怎么解决 val arr = new ArrayList[String]; arr.foreach(println)
44.Spark 涉及到数据库的操作时,如何减少 Spark 运行中的数据库连接数?
42.现有一文件,格式如下,请用spark统计每个单词出现的次数

六、其他

15.按照需求使用spark编写以下程序,要求使用scala语言
33.Scala有没有多继承?可以实现多继承么?
30.Scala里面的函数和方法有什么区别
37.离线分析什么时候用SparkCoreSparkSQL
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集合比如说HashMapConcurrentHashMap我觉得,你最好在平时能去耐心读一下源码,搜一搜相关的博客,最好能知道每个参数为什么设置成这么大?有什么好处?为什么?你会发现不少东西,网上也有很多视频可以去学。
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、大数据

1Bloom Filter
4Spark 启动流程、处理流程
6Spark调度系统,Spark启动流程为什么根据shuffle来区分Stage?怎么划分?
8Spark Core是什么?
DAG作用,如何连起来,为什么根据宽窄依赖切割

2、Java

1StringBuffer为什么线程安全?
2、CAS(*3)是什么,你有哪些应用
1、强引用、软引用、弱引用、幻象引用等解决的问题是什么?为什么会出现这几个分类?
2、单例模式代码(*153、线程安全的单例模式实现
4、设计模式
17Java并发迭代一个版本
14Synchronized底层原理
15volatile底层原理

3、计网

3、HTTP四类基本操作?
4、状态码
5、端口号数量
6、四次挥手状态转换
3、TCP三次握手、四次挥手问题重新整理。

4、OS

1、进程间通信
2、查看后台进程状态

5、算法

4K个链表相加,边界条件、最优解

四、参考

1、99 | 高效学习:如何学习和阅读代码
2、(面经分享)二本,两年curd经验,疯狂复习拿下阿里P6|掘金技术征文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值