当前位置: 首页 > news >正文

运维工程师面经

文章目录

  • 前言
  • Redis
  • MongoDB
  • Python中的GIL(全局解释器锁)
  • Python
  • 算法
  • 总结


前言

本博客仅做学习笔记,如有侵权,联系后即刻更改

科普:


Redis

参考网址

NoSQL技术

  • 基于内存的数据库,并且提供一定的持久化功能
    Redis和MongoDB是当前使用最广泛的NoSQL

Redis

  • 它的性能十分优越,可以支持每秒十几万此的读/写操作,
    其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。
  • Redis 在 Java Web 主要有两个应用场景:
    存储缓存用的数据;
    需要高速读/写的场合使用它快速读/写;

MongoDB

参考文章

应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。

  • MongoDB 是专为可扩展性,高性能和高可用性而设计的数据库。
    它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB 能够提供高性能的数据读写操作。
    MongoDB 的本地复制和自动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性。

Python中的GIL(全局解释器锁)

参考文章

GIL并不是Python的特性,Python完全可以不依赖于GIL。

  • 如果多线程的操作中不是IO密集型,并且计算操作不是原子级的操作时,那么我们需要考虑线程安全问题
  • 始终围绕共享可变状态的读取和写入加锁

Python

sort和sorted的区别

  • L.sort() 函数只适用于列表排序,而sorted()函数适用于任意可以迭代的对象排序。
  • L.sort() 函数排序会改变原有的待排序列表,而sorted()函数则不会改变。所以在使用列表进行排序时,需要考虑是否需要保存原列表,如果无需保存原列表,则优先使用L.sort() 节省内存空间,提高效率。
  • 两个函数通过定义 key 和 cmp 都可以完成排序,但是 key 的效率要远远高于 cmp,所以要优先使用 key 。

os读取文件

  • 当目标文件夹中只有文件时,我们使用os模块的listdir()方法即可:该方法可以返回目标路径下的文件和文件夹的名字列表,参数就是目标路径。
  • os.walk()方法可以生成三元组,也就是我们代码中的filepath,dirnames,filenames,我们将他们分别打印出来可以看到

线程和进程的区别

  • 进程
    是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。
  • 线程
    是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
  • 区别
    线程共享本进程的地址空间,而进程之间是独立的地址空间。
  • python在任何时候,只可能有一个线程在执行代码
    在Cpython 解释器(Python语言的主流解释器)中,有一把全局解释锁(GIL, Global Interpreter Lock),在解释器解释执行Python 代码时,任何Python线程执行前,都先要得到这把GIL锁。
    当一个线程遇到I/O 任务时,将释放GIL

算法

二叉树的遍历

  • 前序(根左右),中序(左根右),后序(左右根)
    光有前序遍历和后序遍历是无法还原二叉树的。

十大排序

  • 堆排序适合于数据量非常大的场合(百万数据)。
    堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误。
    堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。
  • 内存空间不足的时候使用归并排序,能够使用并行计算的时候使用归并排序。

总结

小小励志

有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》

http://www.lryc.cn/news/173243.html

相关文章:

  • stm32之智能垃圾桶实战
  • 【C++面向对象侯捷下】2.转换函数 | 3.non-explicit-one-argument ctor
  • UOS Deepin Ubuntu Linux 开启 ssh 远程登录
  • Postman应用——接口请求和响应(Get和Post请求)
  • Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令
  • (Vue2)自定义创建项目、ESLint、Vuex
  • LLaMa
  • API(九)基于协程的并发编程SDK
  • JavaWeb 学习笔记 7:Filter
  • 【AI视野·今日Robot 机器人论文速览 第三十五期】Mon, 18 Sep 2023
  • Elasticsearch 在bool查询中使用分词器
  • 在Python中创建相关系数矩阵的6种方法
  • 物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证
  • this.$nextTick()的使用场景
  • idea(第一次)启动项目,端口变成了8080
  • brpc 学习(一)M1 MacOS构建方法
  • Python 与 Qt c++ 程序共享内存,传递图片
  • 【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现
  • 2024字节跳动校招面试真题汇总及其解答(五)
  • 如何撤销某个已经git add的文件以及如何撤销所有git add提交的文件?
  • JVM高级性能调试
  • APK的反编译,签名,对齐
  • Django(20):信号机制
  • 31.链表练习题(2)(王道2023数据结构2.3.7节16-25题)
  • 排序算法之归并排序
  • macOS 下 Termius 中文显示为乱码
  • Apifox接口测试工具详细解析
  • Python 实现 PDF 文件转换为图片 / PaddleOCR
  • 【Java基础夯实】变量声明选择包装类还是基本类型有哪些讲究?
  • 获取唯一的短邀请码