最后
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
- Java核心知识整理
Java核心知识
- Spring全家桶(实战系列)
- 其他电子书资料
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
-
硬件:小型机 > x86服务器
-
物理机、虚拟机、容器
-
计算特点的考虑:是要将一个大的计算能力进行分割,灵活分配,还是有一个很大的课题要用多台机器联合计算
-
IO特点的考虑:吞吐率与IOPS多大?虚拟机能否承受?
服务器厂商
-
国内的服务器厂商主要有:曙光、华为、浪潮、H3C、联想、长城等
-
国外的服务器厂商主要有:Dell、HP、IBM
CPU
CPU作为服务器的核心固件,我们主要通过以下几个概念来了解:
-
Socket Socket俗称多少路,就是一个服务器主板上可以安装几个物理CPU
-
Core 一个物理CPU实际可以有几个内核(Core),比如我们经常听到的32核64核、128核等等
-
超线程 如果一个内核可以同时运行2个线程我们就称这个CPU具有超线程能力,反之则不具备超线程能力
-
频率 也叫主频,这个越高越好
-
内存通道 每个CPU能支撑的最大内存数,Intel最新的能支持6个
-
内存带宽、内存规格 CPU支持什么规格的内存,支持的频率范围是多少
以上的这些概念数据可以通过CPU的产品规格书中进行详细了解。在服务器上可以通过 lscpu
命令查看cpu信息
cpu详情
上图服务器CPU显示有72个,是因为有2个Socket,每个Socket有18核而每核可以同时运行2个线程,通过 2 x 18 x 2 = 72
得到。
厂商
-
国外的CPU厂商主要有:Intel、AMD
-
国内的CPU厂商主要有:龙芯、兆芯、飞腾、海光、申威、华为等
主流产品介绍
Intel系列
Intel现在主推的是“Intel至强可扩展”系列,在这个系列下又分为四档:铂金、金、银、铜,每档下面又有不同的型号
intel系列对比
AMD系列
AMD系列主要用到的是霄龙系列,霄龙系列CPU核数很高,下面我们看看几款具体的产品
| 型号 | CPU核心数 | 线程数量 | 最大加速时钟频率 | 基准时钟频率 | 默认TDP/TDP |
| — | — | — | — | — | — |
| 霄龙7742 | 64 | 128 | 高达3.4GHZ | 2.25GHZ | 225W |
| 霄龙7702 | 64 | 128 | 高达3.35GHZ | 2GHZ | 200W |
| 霄龙7702P | 64 | 128 | 高达3.4GHZ | 2GHZ | 200W |
| 霄龙7642 | 48 | 96 | 高达3.35GHZ | 2.3GHZ | 225W |
| 霄龙7552 | 48 | 96 | 高达3.3GHZ | 2.2GHZ | 200W |
| 霄龙7542 | 32 | 64 | 高达3.4GHZ | 2.9GHZ | 225W |
华为鲲鹏系列
「鲲鹏916(低功耗级)」
-
32核/2.4GHz/16nm/75W
-
4通道DDR4控制器
-
PCIe 3.0 ,10GE
-
支持2路互联
「鲲鹏920-3326/4826(极致效能型)」
-
32/48核/2.6GHz/7nm/120/150W
-
8通道DDR4控制器
-
PCIe 4.0 ,100GE,CCIX
-
支持2/4路互联
「鲲鹏920-3326/4826(极致性能级)」
-
64核/2.6GHz/7nm/180W
-
8通道DDR4控制器
-
PCIe 4.0 ,100GE,CCIX
-
支持2/4路互联
主流CPU型号性能横向对比
cpu性能对比
通过上图大家可以看到国产CPU与国外CPU之间的差距,性能基本只有Intel中档CPU性能的一半左右,国产CPU还有很长的路要走。
NUMA
NUMA 即 Non-Uiform Memory Access
(非一致性内存访问),结合我们之前讲述的主板架构,两颗CPU之间有一个通道,每个CPU与各自的内存通道进行直连,可以通过下图直观看出。
numa
CPU0 访问 左边的内存通道速度很快,CPU1访问右边的内存通道也很快,当CPU1要访问左边的内存通道必须要借助CPU0的帮忙,需要先通过QPI总线找到CPU0,再来访问左边的内存通道,这就产生了额外的开销,访问左边内存通道的开销相当于直连访问右边通道开销的3倍。
「所以对于计算密集型任务我们需要尽量避免这种跨CPU的内存访问,这就是NUMA的问题,非一致性指的是访问本地和跨CPU访问的代价差别不一致」
我们可以通过指令 numactl -s
查看numa的信息
可以使用指令 numactl --cpunodebind=0 --membind=0 command
指定进程使用的numa节点和内存
如上就是让 command
指令只使用cpu0 ,和内存0,这就使得进程指令在运行的时候使用的CPU和内存在同一侧,达到计算性能速度最大化的效果。
内存
–
内存大家平时工作中接触的都比较多,对于内存我们主要通过以下几个方面来了解:
- 内存规格
DDR3、DDR4,目前主流已经是DDR4
- 内存大小
2G、4G、8G、16G、32G
- 内存频率
1333MHz, 1600MHz, 1866MHz、2133MHz, 2400MHz , 2666MHz
- 带宽
即CPU对内存实际读写数据的速度,DDR4 2400内存的带宽为30GB/s左右
- 通道
一个CPU可以连接多个内存,CPU上的内存通道数指的是CPU能并发访问直连多少个内存。4通道表示CPU可以同时访问与之直连的4根内存,这样就能达到带宽翻四倍的效果。
在4通道模式下读取1G的数据进内存,最终数据会分布在4根内存上而不是一根内存,这就实现了速度的翻4倍;
每颗CPU对自己的内存控制器直连的内存访问速度较快,要访问另一颗CPU连接的内存时,需要通过QPI总线,开销为本地内存的3倍。
了解内存信息
主要通过以下三个命令全面了解内存信息
- 我们可以通过
dmidecode -t memory | more
指令查看内存信息,效果如下:
内存信息
- 可以使用
dmidecode -t memory | grep Size
指令查看内存大小并判断内存是否正常工作
查看内存插槽
将内存插入主板时一般需要对称插入,通过上图我们可以看到下面有根内存不工作。
- 可以通过
free
指令查看内存容量
内存容量
系统剩余内存 available 是我们最关心的一个值,不要被free列唬住了。
磁盘
–
对于磁盘我们主要通过吞吐率和IOPS两个指标来对其衡量
「吞吐率/吞吐量」:单位时间内读写的数据量
-
机械硬盘:约100MB/s – 200MB/s;
-
普通固态硬盘:200MB/s - 500MB/s;
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
发,JAVA基础,Spring原理,微服务,Netty与RPC**,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
[外链图片转存中…(img-WLgtMXco-1715350054950)]