大家肯定都希望自己的下一份工作是高薪,而现在互联网行业只有大厂能够满足各位的需求,不管是薪资还是发展前途上,本站从这篇文章开始,会收集一些大厂的面试题,大家也可以自己考核一下自己的水平怎么样。
1. 请你谈谈进程和线程的区别?
进程
进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。线程
线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。联系
线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。区别:
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
举个简单的例子:进程比如成火车,线程就是车厢线程在进程下工作(单纯的车厢无法工作)
一个进程可以包含多个线程(一列火车可以包含多个车厢)
不同进程间数据很难共享(一辆火车上的乘客很难换到另一辆火车上)
进程使用的内存地址可以上锁,一个线程使用某些共享内存时候其他的线程必须等他结束,才能使用这块内存, (火车上的洗手间,互斥锁)
2. 谈谈HTTP?
概念:
HTTP 是一个协议,是一个超文本传输协议。它基于TCP/IP来传输文本,图片,视频,音频等。
但是HTTP不提供数据包传输功能,也就是数据包从浏览器到服务端来回的传输与http没关系。因为这是tcp/ip干的
所以我们重点强调了交互,HTTP规定了一种交互的格式,大家可以用这个格式来交互,减少交互成本。
HTTP的本质就是客户端和服务器端约定好的一种通信格式
HTTP是通信协议,而RPC是远程调用。公司内部用RPC,第三方接口都用HTTP协议。
3. 文件想要修改权限,用什么命令,文件权限755代表什么意思
chmod 命令修改权限
7 root用户 可读可写可执行
5 用户组 可读可执行
5 普通用户 可读可执行```
chmod 755 a.sh
4. 查看cpu,内存的情况
[root@eagleslab ~]# cat /proc/cpuinfo
[root@eagleslab ~]# lscpu
内存
free -m
df -k
top
cat /proc/meminfo
5. Tomcat的日志在什么地方
catalina.log
6. MySQL的左右链接?
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同
内连接:
只连接匹配的行
左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)
以及右边表中全部匹配的行,a.order_id = b.order_id(+)
右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)
以及左边表中全部匹配的行,a.order_id(+) = b.order_id
全外连接:
包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行
7. 云环境监控获取到一台支撑物理机CPU利用率超标持续告警,如何排查?
从系统层面,业务层面,访问调用层面,数据层面进行展开,逐一排查
8. 软连接和硬链接的区别
软连接可以理解为快捷方式,硬链接理解为复制
语法:
软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
区别如下:
硬链接:与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块,无法跨分区创建
软链接:保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。
9. Kubernetes有哪些核心组件这些组件负责什么工作?
etcd:提供数据库服务保存了整个集群的状态
kube-apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
kube-controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
cloud-controller-manager:是与底层云计算服务商交互的控制器
kub-scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet:负责维护容器的生命周期,同时也负责Volume和网络的管理
kube-proxy:负责为Service提供内部的服务发现和负载均衡,并维护网络规则
container-runtime:是负责管理运行容器的软件,比如docker
10. 描述一下Pod的生命周期有哪些状态?
status 属性里面有一个phase字段记录了Pod的状态
正常情况下起一个新Pod的过程
Pending表示Pod已经被同意创建,正在等待kube-scheduler选择合适的节点创建,一般是在准备镜像
Running表示Pod中所有容器已经被创建,并且至少有一个容器正在运行或者是正在启动或者正在重启
Succeeded表示所有容器已经成功终止,且不会再启动
Failed表示Pod中所有容器都是非0状态退出
Unknown表示无法读取Pod状态通常是kube-controller-manager无法与Pod通信
11. 怎么看Pod中的容器是否健康?
status 属性里面有一个conditions字段记录了容器状态
其中 type: Ready=True 表示Pod已经准备就绪,切已经加入了Service的负载均衡当中
type: ContainersReady=True表示所有Pod中所有容器都通过了健康检查(如有),并全部准备就绪
12. 编写脚本实现以下功能
每天早上5点开始做备份
要备份的是/var/mylog里所有文件和目录可以压缩进行备份
备份可以保存到别一台器上192.168.1.2 FTP帐号 aaa 密码 bbb
要示每天的备份文件要带有当天的日期标记
#cat /root/mylogbak.sh
#!/bin/bash
bakdir=mylog
date=date +%F
cd /var
tar zcf ${bakdir}_${date}.tar.gz ${bakdir}
sleep 1
ftp -n <<- EOF
open 192.168.142.129 #远程ftp服务器IP
user aaa bbb
put mylog_*.tar.gz
bye
EOF
rm -rf mylog_*.tar.gz
添加crontab:
crontab -l
00 05 * * * /bin/bash /root/mylogbak.sh #每天早上5点开始执行备份脚本
总结
腾讯运维岗的面试偏基础,基础一定要牢固。