面经——Linux相关

摘自:看完这些面试必问的Linux小知识,我保证你面试后会来给我的文章一键三连
作者:万里羊
发布时间:2021-04-09 21:55:23
网址:https://blog.csdn.net/weixin_44895651/article/details/115532107

       作为一名以后想从事嵌入式Linux工程师的大学生,那么Linux肯定是得学习的。如果要从事C++后台或者服务器运维相关的工作那么Linux肯定也是一个必备的工具啦!既然作为工作中需要接触的工具那么在面试过程中就一定会问到,关于Linux的基本命令、Linux的基本组件、进程间通信、线程间同步…都有可能被问到。尽管面试考察的方面很多,但是经过大量的面试就会发现有很多问题面试官是会百问不厌的。
往期推荐:
       经过笔试和多轮技术面试我居然败给了HR面?
       面试官说:我们不要连Android TP驱动流程都不知道的人
Alt

高能预警 干货满满 不确定看看?然后再给个一键三连?
文章将更新!
走过路过千万别错过,点赞收藏+关注是对我最大的支持

文章目录

    • Linux——系统篇
      • Linux是什么?
      • Unix和Linux有什么区别?
      • Linux系统的组成部分?
      • Linux内核的组成部分?
      • 内存管理单元MMU有什么作用?
      • 常见的操作系统进程调度策略有哪些?
      • I/O子系统层次结构
      • 逻辑地址、线性地址、物理地址、总线地址、虚拟地址的区别?
      • 操作系统的内存一般有哪几种方式,各有什么优缺点?
      • 用户空间和内核通信的方式有哪些?
      • 调用API read()/write()时,内核具体做了那些事情?
      • 系统调用的作用?
      • Boot loader、Linux内核、根文件系统三者之间的关系?
      • Bootloader的启动过程分为那两个阶段?
    • Linux——人机交互篇
      • Linux常用命令
      • Shell脚本
      • GCC、GDB、makefile
      • makefile
    • Linux ——进程线程篇
      • 进程间通信
      • 线程间同步机制
      • 线程与进程的区别
      • 什么是死锁?产生死锁的原因是什么?
      • 死锁的四个必要条件是什么?
      • 死锁的处理方法?
      • 如何预防死锁?
    • Linux——网络篇
      • 网络基础知识
      • TCP编程
      • 网络高频面试题汇总

Linux——系统篇

Linux是什么?

       简单的来说Linux就是一套开源的和自由传播的基于Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。简单的来说就是和windows、Mac OS比较像的一种多任务、多用户的操作系统!

Unix和Linux有什么区别?

       Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为Unix和Linux操作系统是一样的,然而,事实并非如此,以下是两者的区别。

  1. 开源性
    Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。

  2. 跨平台性
    Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。

  3. 可视化界面
    Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。

  4. 硬件环境
    Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,安装难度较大。

  5. 用户群体
    Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。

       相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!

Linux系统的组成部分?

       Linux系统由 boot loader、Linux kernel 、Linux Shell、Linux应用程序组成。

Linux内核的组成部分?

       (1)第一种分类方式:内存管理子系统、进程管理子系统、文件管理子系统、I/O管理子系统

       (2)第二种分类方式:进程调度(SCHED)、进程间通信(IPC)、内存管理(MMU)、虚拟文件系统(VFS)、网络接口(NET)

内存管理单元MMU有什么作用?

       内存管理单元的主要作用是内存映射、内存分配和回收、内存保护、内存扩充

常见的操作系统进程调度策略有哪些?

       先来先服务、短进程优先、高响应比优先、时间片轮转、多级反馈队列、最高优先权优先。

I/O子系统层次结构

       从上至下依次是用户层I/O软件,设备独立性软件,设备驱动程序,中断处理程序

逻辑地址、线性地址、物理地址、总线地址、虚拟地址的区别?

地址简介
逻辑地址与内存段相关的偏移地址部分。例如,在C语言获取指针变量的值,就是逻辑地址,不和绝对的物理地址相关
线性地址线性地址=逻辑地址+基地址
物理地址如果启动了分页机制,那么线性地址使用页表项变换后就是物理地址。如果没有启用分页机制,那么线性地址就是物理地址。
总线地址x86下的I/O地址,ARM下的物理地址。
虚拟地址MMU虚拟出来的地址

操作系统的内存一般有哪几种方式,各有什么优缺点?

  • 分页存储管理:优点是不需要连续的内存空间,且内存利用率高(只有很小的页内碎片);缺点是 不易于实现内存共享与保护。
  • 分段存储管理:优点是易于实现段内存共享和保护;缺点是每段都需要连续的内存空间,且内存利 用率较低(会产生外部碎片)。
  • 段页式存储管理:优点是不需要连续的内存空间,内存利用率高(只有很小的页内碎片),且易于 实现段内存共享和保护;缺点是管理软件复杂性较高,需要的硬件以及占用的内存也有所增加,使得执 行速度下降。

用户空间和内核通信的方式有哪些?

系统调用API用户空间进程通过系统调用进入内核空间,访问指定的内核空间数据
驱动程序用户空间进程可以使用封装后的系统调用接口访问驱动设备节点,和运行在内核空间的驱动程序通信
copy_to_user()、copy_from_user()在驱动程序中调用的接口,实现用户空间和内核空间的数据拷贝操作,应用于实时性要求不太高的项目中
procfs是一种特殊的文件系统,是Linux内核信息的抽象文件接口,大量内核中的信息以及可调用的参数都被作为常规文件映射到这个目录树中,用户可以直接通过echo或cat这样的命令对系统信息进行修改和查询。
共享内存mmap在代码调用接口,实现内核空间与用户空间的地址映射,在实时性要求很高的项目中为首选
netlink用户进程使用标准的socket API就可以使用netlink提供的强大功能

调用API read()/write()时,内核具体做了那些事情?

       用户进程调用read()/write()后进入内核空间-> 调用内核的sys_read()/sys_write()函数 -> 内核函数进一步调用fop.read()/fop.write()指向的函数,也就是驱动程序里具体的读写函数。

系统调用的作用?

       为应用程序提供访问硬件的同一接口,以至于应用程序不必关心具体的硬件操作细节。

       为系统内核提供保护,保证系统的稳定和安全,因为**系统调用还规定了用户进程进入内核的具体方式以及所能访问的数据范围**。

Boot loader、Linux内核、根文件系统三者之间的关系?

       系统上电,就执行Bootloader来初始化处理器及其外设,将系统的软硬件环境带到一个合适的状态

       Boot loader传递给Linux 内核 bootcmd和boot targs这两个比较重要的参数,让Linux内核知道从内存中那个地方读取相关的设备树,系统镜等文件,然后执行Linux内核。

       Linux内核完成初始化之后就挂载某个文件系统作为根文件系统。

Bootloader的启动过程分为那两个阶段?

  • 第一个阶段是汇编阶段,完成一些依赖于CPU体系结构的初始化,并执行第二阶段的代码。
  • 第二阶段是C语言的,进一步完成硬件的初始化,并建立内存映射,并将内存和根文件系统读取到内存中,然后启动内核

Linux——人机交互篇

Linux常用命令

       在博主之前的文章中有整理了相关的Linux常用命令可以查看史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!这篇文章,这篇文章覆盖了绝大部分的Linux命令!目前已经有1000+点赞,6000+收藏。这里面需要重点关注的命令就是关于**Linux用户Linux进程管理文件查找**这些是面试官最喜欢问的问题也是最容易记混淆的知识!既然是最容易记混淆的那么就需要重点关注整理一下!

命令作用说明
useradd -m -g 组 新建用户名添加新用户- m 自动创建用户家目录
- g 指定用户所在的组,负责会建立一个和同名的组
passwd设置用户密码如果是普通用户,直接用passwd可以修改自己的账户密码
userdel -r 用户名删除用户-r 选项会自动删除家用户目录
cat /etc/passwd | grep 用户名确认用户信息新建用户后,用户信息会保存在/etc/passwd文件中
命令作用说明
ps -aux查看进程的详细信息- a 显示终端上的所有进程
- u 显示进程的详细状态
- x 显示没有控制终端的进程
ps -ef | grep -列出需要的进程配合管道查看相关的进程的详细信息
pstree通过显示进程的树状图来展示进程间的关系如果指定了pid,那么树的根就是该pid
top监控系统不同进程所使用的资源信息
nice <优先值> <进程名> - 通过给定的优先值启动一个程序设置改变进程的优先级普通用户只能设置0~20,越小优先级越高
renice -n -g - 改变指定进程的优先值通过改变指定用户和组来改变进程优先级
kill用于发送信号来结束进程可以通过-9参数来执行
netstat -nap | grep xxx查看进程号为xxx的端口占用号
命令作用说明
find <指定目录> <指定条件> <指定动作>查找指定目录下的指定文件,并对文件进行相关操作条件参数可以是 - name按照名字进行查找
grepgrep允许对文本进行模式查找- n显示匹配行及行号
- v显示不包含匹配文本的所有行(相当于取反)
- i 忽略大小

Shell脚本

       用户界面和命令行这个另外开发的程序,Linux下这个命令行的程序就叫Shell,其是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质

       博主在之前学习Shell脚本的时候已经整理的比较详细了,这里就把链接给贴出来啦!

  • Shell基本概念
  • Shell变量和程序语句
  • Shell函数调用以及变量的作用域

GCC、GDB、makefile

  • 预处理:引入头文件、进行宏替换、处理条件编译指令、去除注释、添加行号。
  • 编译:进行语法分析等,并生成汇编代码.s。
  • 汇编:将汇编代码转成二进制代码.o(目标文件)。
  • 链接:将有关的目标文件彼此连接为可执行代码。分为静态链接(将库文件代码搬迁到可执行文件 中,后缀是.a)和动态链接(在执行的时候转到库文件代码执行,后缀是.so)。

之前也有整理关于代码的编译还有调试相关的文章,可以戳链接进入文章代码从编译到运行经历了什么?

makefile

       makefile从入门到放弃——博主吐血整理的笔记

       makefile的基本条件就是目标和依赖

Linux ——进程线程篇

进程间通信

       每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程间交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供这种机制称为进程间通信!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2DMiFYSH-1617975383512)(C:\Users\lenovo-pc\AppData\Roaming\Typora\typora-user-images\image-20210409204514616.png)]

  • 管道

    项目通信方式特点
    无名管道(内存文件)半双工通信数据只能单向流动,只能在有亲缘关系的进程间使用(父子进程)
    有名管道(FIFO文件,借助文件系统)半双工通信允许在没有亲缘关系的进程间使用,是先进先出的通信方式
  • 共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段内存由一个进程创建,但是多个进程可以访问。共享内存是最快的IPC方式,他是针对其他进程间通信方式运行效率低而专门设计的。

  • 消息队列:消息队列是有消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限制等缺点。

  • 套接字:适用于不同机器间进程通信,在本地可作为两个进程间通信的方式。

  • 信号:用于通知接收进程某个时间已经发生,比如按下ctrl+C就是信号

  • 信号量:信号量就是一个计数器,可以用来控制多个进程对共享资源的访问。常用一种锁的机制,实现进程、线程的临界区的同步及互斥访问。

线程间同步机制

  • POSIX无名信号量(基于内存的信号量):可以用于进程间同步
  • POSIX有名信号量:线程进程都适用
  • 初始化、P操作(申请资源)、V操作(释放资源)
  • 互斥锁+条件变量:只能用于线程间同步

线程与进程的区别

       调度:线程是调度的基本单位;进程是拥有所有资源的基本单位。

       并发性:一个进程内多个线程可以并发;多个进程可以并发

       拥有资源:进程拥有独立的地址空间;线程不拥有系统资源。

       系统开销:线程创建销毁只需要处理PC值,状态码,通用寄存器,线程栈和栈指针即可;进程创建和线程需要分配及销毁task_struct结构。

关于线程与进程我也有整理相关的博客:

  • 1、进程简介

  • 2、线程&线程间同步

  • 3、Unix间线程通信

  • 4、System V间通信

  • 5、并发与竞争

什么是死锁?产生死锁的原因是什么?

       死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程将无法向前推进。

       原因:①系统资源不足。②资源分配不当。③进程推进的顺序不合适。

死锁的四个必要条件是什么?

      互斥条件:一个资源每次只能被一个进程使用,其他进程只能等待。

       请求与保持条件:进程已经获得至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时该进程被阻塞,但对已获得资源依然保持不放。

       不可剥夺条件:进程所获得的资源不能被其他进程剥夺,只能被自己释放。

       循环等待条件:若干进程形成首尾相接循环等待资源的关系。

       注意:以上四个条件缺一不可

死锁的处理方法?

(1)预防死锁:通过设置一些限制条件,去破坏产生死锁的必要条件。

(2)避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁。

(3)检测和解除死锁:允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉。

如何预防死锁?

(1)破坏“请求与保持条件”:

  • ①静态分配,即每个进程在开始执行时就申请它所需要的全部资源

  • ②动态分配,即每个进程在申请所需要的资源时它本身不占用系统资源。

(2)破坏“不可剥夺条件”:一个进程在阻塞等待期间,其占有的资源被隐式释放后被其他进程使用,而阻塞等待的资源只有获得所有需要的资源才能重新启动。

(3)破坏“循环等待条件”:采用资源的有序分配,将所有资源进行编号,紧缺的资源采用比较大的编号,一个进程只有获得较小编号的资源才可以申请较大编号的资源。

Linux——网络篇

网络基础知识

       借鉴之前整理的博客:网络基础知识

TCP编程

       借鉴之前整理的博客:网络编程——TCP

网络高频面试题汇总

       借鉴之前博客整理的面试题掌握了这些面试题,离大厂的距离更近一步!

本文将持续更新和维护,如果觉得对自己有帮助就给个赞和关注吧!

       不积小流无以成江河,不积跬步无以至千里。而我想要成为万里羊,就必须坚持学习来获取更多知识,用知识来改变命运,用博客见证成长,用行动证明我在努力。
       如果我的博客对你有帮助、如果你喜欢我的博客内容,记得“点赞” “评论” “收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 权限动态申请

名字其实有点让人感觉高大上"权限动态申请",其实也没有什么, 以前做Android程序的时候,比如需要打开摄像头 那么需要在 然后就可以了, 但是Android6.0之后呢,有些权限必须手动让用户同意才可以,哪些权限需要用户手动同意,哪些不需要这里大家自行百度 现在说一下 直接…

php mysql installed_CentOS在使用yum install php-mysql安装php时报错的解决方法

由于此项目的apache只是用于下载功能和安装phpAdmin来查找数据库&#xff0c;而且之前已经安装了Mysql 5.6&#xff0c;于是在部署是都是直接使用yum命令方法安装。但在使用yum install php-mysql时报了一大堆的错误&#xff1a;from install of mysql-libs-5.1.69-1.el6_4.x86…

ppt转html5 带动画_我复刻了IPhone12这页发布会PPT

今年苹果发布会没有看&#xff0c;但是最近看到三石兄发了一篇关于发布会现场的这页PPT复刻的推文&#xff0c;它介绍的是利用直线辅助的方法来完成。三石兄相关推文&#xff1a;iPhone12发布会PPT&#xff0c;你也能做&#xff01;​mp.weixin.qq.com那么今天我们主要介绍如何…

tablemodel dapter区别

2019独角兽企业重金招聘Python工程师标准>>> 简单的原则&#xff1a; 如果查询部分字段用adapter 如果多表查询用adapter 如果考虑sql注入用adapter 如果增加、删除、修改、查询单个表的全部字段用tablemodel 转载于:https://my.oschina.net/shunshun/blog/92668

安卓短信加密_发短信控制车辆!苹果发布ios14,手机可作车钥匙

1.苹果宣布今后iPhone和Apple Watch可以作为开启和启动车辆的数字钥匙&#xff1b;2.支持该系统的第一款汽车将会是宝马5系&#xff1b;3.“车钥匙”功能将于下月推送&#xff0c;iOS13上也可使用&#xff1b;4.车主可以通过Apple的iMessage短信应用程序与其他五个人共享密钥&a…

ubuntu14测试mysql_在ubuntu14.04中安装Hammerora-2.10——测试mysql、oracle性能够的工具...

Hammerora—The Open Source Oracle Load Test Tool首先介绍一下Hammerora&#xff0c;从创作者对这个工具的标题描述可以看出&#xff0c;Hammerora是一款Oracle数据库负载测试工具。该工具可以在Oracle 8i、9i和10g等版本上使用。当前可以用在Linux/Unix和Windows上。初步实现…

哇嘎显示等待无服务器,vagaa搜索不到资源怎么回事?vagaa哇嘎搜索没反应的解决方法...

vagaa哇嘎是一款资源搜索神器&#xff0c;使用非常的简单&#xff0c;但是有网友反映&#xff0c;使用vagaa哇嘎搜索不到东西了&#xff0c;这是怎么回事&#xff0c;如果点击vagaa搜索没反应可能是搜索的问题&#xff0c;也可能是其他问题&#xff0c;一起来看看具体的解决方法…

内存四区(代码区 静态区 栈区 堆区)

参考&#xff1a;内存四区&#xff08;代码区 静态区 栈区 堆区&#xff09; 作者&#xff1a;今天天气眞好 发布时间&#xff1a; 2021-04-01 18:09:13 网址&#xff1a;https://blog.csdn.net/qq_51118175/article/details/115379779?spm1001.2014.3001.5501 内存相关博文&a…

webpack4 入门配置研究

1. 全局安装 npm install webpack webpack-cli webpack-dev-server -g 1.1&#xff09;输密文的密码&#xff08;电脑开机&#xff09; 1.2&#xff09;安装成功 2. 输入命令mkdir config dist src创建三个文件夹 3.输入命令npm init -y 4. 输入命令touch dist/index.html src/…

王者荣耀6月23服务器维护,王者荣耀6.23维护到什么时候?6月23日长枪掠火版本异常介绍...

王者荣耀6.23维护到什么时候&#xff1f;可能很多玩家对于今天更新的时间还不太清楚&#xff0c;下面就让浏览器小编为大家带来&#xff0c;王者荣耀6月23日长枪掠火版本异常介绍。亲爱的召唤师&#xff1a; “长枪掠火”版本更新后&#xff0c;我们收到反馈&#xff0c;本次在…

采样频率和带宽的关系_基于矢量网络分析仪的 TDR 与传统采样示波器 TDR 之间的测量性能和优势比较...

最近几年随着多 Gbps 传输的普及&#xff0c;数字通信标准的比特率也在迅速提升。比特率的提高使得在传统数字系统中不曾见过的问题显现了出来。诸如反射和损耗的问题会造成数字信号失真&#xff0c;导致出现误码。另外由于保证器件正确工作的可接受时间裕量不断减少&#xff0…

mysql的分片系统_MySQL分片

shardingMySQL5以后提供了Sharding的能力&#xff0c;其目的就是为突破单节点数据服务器I/O能力限制&#xff0c;解决数据库Scale Out水平扩展的问题。通过Sharding可以将数据按照物理位置贴合用户分布&#xff0c;得到更加快速的响应&#xff1b;操作庞然大物总是让人头疼&…

在线普通话转粤语发音_香港最新悬疑侦探剧福尔摩师奶,粤语知识好难

150元系统学粤语付费咨询微信2019年2月25日香港TVB上了一部新剧《福尔摩师奶》&#xff0c;该剧以19世纪末至20世纪初的油麻地为背景&#xff0c;讲述一个女探长祖迪费查(陈松伶饰)破案的故事。/ 盏鬼 // 识少少 /①普通话的“嫉妒、受不了”&#xff0c;粤语会说&#xff1a;唔…

Java web小项目_个人主页(1)—— 云环境搭建与项目部署

摘自&#xff1a;Java web小项目_个人主页&#xff08;1&#xff09;—— 云环境搭建与项目部署 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-26 23:59:39 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115104493?spm1001.2014.3001…

网页搜索怎么显示排名_深圳seo搜索排名优化效果怎么样

效果怎么样l31b10seo搜索排名优化深圳&#xff0c;企业商家为了自己的网站有更好的排名&#xff0c;获得更好的流量&#xff0c;往往会采用SEO优化&#xff0c;那么SEO优化有哪些方法呢&#xff1f;或者是哪些方法更有效呢&#xff1f;这是一个多媒体的时代&#xff0c;内容元素…

实战 Lucene,第 1 部分: 初识 Lucene

Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包&#xff0c;它不是一个完整的搜索应用程序&#xff0c;而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 目前已经有很…

Java web小项目_个人主页(2)—— 边缘加速原理与实现

摘自&#xff1a;Java web小项目_个人主页&#xff08;2&#xff09;—— 边缘加速原理与实现 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-27 14:44:40 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115260283?spm1001.2014.3001.5…

mysql 双从性能_MySQL双主一致性架构优化

转自&#xff1a;MySQL双主一致性架构优化 - osc_avwazwuz的个人空间 - OSCHINA​my.oschina.net一、双主保证高可用MySQL数据库集群常使用一主多从&#xff0c;主从同步&#xff0c;读写分离的方式来扩充数据库的读性能&#xff0c;保证读库的高可用&#xff0c;但此时写库仍然…

最清晰细致的教程!一步步教你打造Win7+CentOS双系统

大概半年前自学了一段时间Linux&#xff0c;但没有坚持下来……最近又想开始看&#xff0c;但是希望看到Linux在物理机下的运行情况而不是仅仅在虚拟机下运行&#xff0c;所以尝试着在已经安装了Win7的系统下安装CentOS&#xff0c;实现双系统切换使用的目的。经过大半天的实验…

全国计算机等级考试题库二级C操作题100套(第01套)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…