广州多益网络面经
1.自我介绍
专业+大学经历+项目
2.项目介绍和遇到的困难和优化策略
项目描述略
优化:tomcat优化、mysql优化
3.Redis常用数据类型和应用场景
类型 | 应用场景 |
---|---|
String | session共享、分布式全局序列号、计数器等 |
List | 微博和微信号的消息流(堆、栈、堵塞队列)、订阅号 |
Hash | 电商购物车 |
Zset、Set | 抽奖、点赞、收藏、关注等 |
备注:hash优点:1.同数据归类整合 2.消耗cpu资源比String更小 3.比String更节约空间
hash缺点:1.数据过期不能能使用filed上,只能用在key上 2. 在Redis集群中不适合大规模使用(redsclurts对key的操作会经过hash函数分配的hash槽分开,数据会集中在一个机器中,违背了集群的数据分片存储)
4.Redis持久化和事务
持久化:aof和rdb
事务:redis事务和mysql事务的区别是redis无论失败都会执行、mysql失败会直接回滚。
5.Redis与Mysql数据同步解
点击跳转1
点击跳转2
6.缓存击穿、穿透、雪崩出现原因和解决方案
- 缓存穿透 : 缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。
- 缓存击穿 : 由于原有缓存失效,新缓存未到期间,所有原本应该访问缓存的请求都去查询数据库了。(与缓存雪崩的区别是缓存击穿时小面积失效,缓存雪崩时大面积失效。)
- 缓存雪崩 : 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。
- 缓存预热 : 缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
- 缓存更新 : 除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种:a. 定时去清理过期的缓存;b. 当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。
点击跳转1
7.Spring拦截器
点击跳转1
8.堆栈区别、优缺点、分析速度快慢和原因
从堆栈结构忒但和存数据、取数据两方面分析
9.Linux删除文件、显示行号
指令 | 参数 | 耗时 |
---|---|---|
rm | -r 向下递归 -f不询问删除 | 不能删除海量文件、耗时大。且可能倒是系统崩溃 |
find command with -exec | -exec 参数后面跟的是command命令 | 50W文件耗时14分钟 |
find command with -delete | -exec 参数后面跟的是command命令 | 50W文件耗时5分钟 |
perl | perl脚本 | 50W文件耗时1秒 |
rsync -delete -before | -delete-before 接收者在传输之前进行删除操作 | 50W文件耗时3分钟 |
总结 :
- 1.rm命令大量调用了lstat64和unlink,可以推测删除每个文件前都从文件系统中做过一次lstat操作。过程:正式删除工作的第一阶段,需要通过getdirentries64调用,分批读取目录(每次大约为4K),在内存中建立rm的文件列表;第二阶段,lstat64确定所有文件的状态;第三阶段,通过unlink执行实际删除。这三个阶段都有比较多的系统调用和文件系统操作。使用rm命令来删除海量文件,耗时最长,且容量造成Hung机甚至系统崩溃!rm的上下文切换比较多,会造成System CPU占用较多,对于文件系统的操作,简单增加并发数并不总能提升操作速度。
- 2.使用find命令或者ls命令先列出,再通过管道传给-exec或者-delete来删除无疑是不错的选择
- 3.最快的是使用Perl脚本和rsync命令来删除。
- 4.rsync所做的系统调用很少:没有针对单个文件做lstat和unlink操作。命令执行前期,rsync开启了一片共享内存,通过mmap方式加载目录信息。只做目录同步,不需要针对单个文件做unlink。频繁做减法不如直接从头来过把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。
10.Web开发常见安全问题及解决
点击跳转1
点击跳转2
11加班和996看法
12.了解过那些新技术和技术论坛
13.在线编程题(比较版本号大小)
西安大唐电信面经(年代久远有时间再写)
0.自我介绍
1.年代久远忘记了
北京汇量科技(想起来再写)
武汉烽火众智面经(部分)
0.自我介绍+比赛作品相关
1.计算机网络
2.交换机、集线器、中继器和xxx
3.TCP/IP+UDP
2.计算机操作系统
3.Linux相关
4.视频处理
5.Oracle+MySQL
6.Redis+mongoDB+ehCache
7.模拟大量数据增删改查场景
8.ES和Solr对比和优缺点
9.数据存储技术(非存储引擎、存储过程)
10.Docker和虚拟机对比
11.虚拟化技术(KVM等)
12.JVM
13.职业规划
14.闲聊+offer+公司
不全 待补充
西安信大捷安面经
0.自我介绍+比赛作品相关
1.java和C的传值方式和区别
2.java中引用变量的值传递
3.java和C的区别
4.JVM工作原理和内存模型
5.类加载过程
6.JPA和Spring DateJPA
7.Spring Date JPA、Hibernate、Mybatis对比
8.介绍一下Spring Boot
9.FastDFS原理、FastDFS和GridDFS对比
10.Solr和ES对比
11.Mysql事物、分布式事务
12.Redsi事务、分布式事务
13.Redis常用数据类型和对比
14.Redis和MongoDB区别
15.Mysql水平切割、主从复制、读写分离
16.手写SQL(三表联查)
17.Maven相关
18.常用Linux指令
19.Docker、Jenkins、Rancher
20.IO模型+Socket+Netty+WebService
21.闲聊+公司
0.自我介绍+考研+比赛作品
1.JVM内存模型和运行时数据区详解
2.JVM线程数据共享问题
3.JVM调优和AOT和AIT
4.Tomcat调优和优化
5.Tomcat连接池原理
6.Nginx工作原理
7.Nginx负载均衡和反向代理原理
8.LVS+Nginx+Tomcat+keepLive工作机制
9.Http+Https
10.TCP/IP+UDP
11.DNS配置以及原理
12.一个完全没听过的东西(计算机网络方面)
13.Redis常用数据类型以及优缺点
14.Redis集群
15.MongoDB+GridDFS
16.内存数据存储+内存碎片
17.购物车秒杀方案详情以及异常处理
18.五种IO模型原理和优缺点
19.select、pell、epell优缺点和异同
20.Netty相关
21.二进制、十进制、十六进制转换
22.一个完全没听过的东西
23.常见的Web网络安全
24.网络传输加密
25.一个完全没听过的东西(网络传输的编码方面)
26.闲聊+offer+公司