【七牛云 后端】笔试面

news2024/10/6 14:28:47

一、选择、填空知识点整理

1. fork() 函数

fork() 函数通过系统调用创建一个与原来进程相同的进程(如果初始参数或者传入的变量不同,两个进程也可以做不同的事)

示例 ——

#include <stdio.h>
int main() {
    for(int i=0; i<2; i++){
        fork();
        printf("输出 %d 次 \n" , i);
    }
    return 0;
}

在这里插入图片描述

解释: 程序每次进入一个 for 循环,就执行一次 fork() 函数,开启一个新的 main 线程。因为,for 循环一共循环 2 次,因此重新开启了两个 main 线程 。所以加上本身的一个线程,一共 3 个相同的 main 线程,因此输出 6 次。

2. 如何提升哈希表查询效率

哈希表的查找性能在 “没有冲突” 的情况下是最高的,时间复杂度 O(1)。但是实际情况下,冲突是不可避免的,因此散列表的平均查找长度取决于如下因素:

  1. 散列表是否均匀 —— 由散列函数的好坏决定
  2. 处理冲突的方法 —— 是否会产生堆积
  • 线性探测:产生堆积;
  • 链址处理:不会产生任何堆积
  1. 散列表的装填因子 —— 装填因子标志着散列表的装满的程度,其计算方式如下:
	装填因子 = 填入表中的记录个数 / 散列表的长度

由上述公式可得出,记录越多,装载因子越大,那么产生冲突的可能性就越大

3. kill -15 进程号

15 的含义 —— 进程信号,15 表示 正常关闭进程,当操作系统认为该关闭进程行为对系统有不良影响时,就无法关闭。

进程信号 signal:

进程信号有很多,除了默认的正常关闭的 15 外,比较常用的还有 :

  • 9 强制中止进程
  • 19 暂停进程

4. DNS 协议

  • DNS 是什么 ?
    域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库。它提供主机名和IP地址之间的转换及有关电子邮件的选路信息。
  • DNS 中的域 ?

5. HTTP 请求方法

HTTP1.0 : GET, POST HEAD

HTTP1.1 :+ OPTIONS、PUT、PATCH、DELETE、TRACE 、CONNECT

6. 稳定排序

稳定排序: 插入排序、基数排序、归并排序、冒泡排序
不稳定的排序: 快速排序、希尔排序、简单选择排序、堆排序

7. 线程 & 线程

  • 本质区别:进程是资源分配的基本单位,线程是CPU调度的基本单位。
  • 内存消耗:进程有独立的虚拟地址空间,而同一个进程的线程之间共享进程的资源,自身只有栈和寄存器等少量独立的空间。
  • 切换开销:进程和线程切换时,需要切换上下文,进程的上下文切换时间开销远远大于线程上下文切换时间,各种页表、打开的文件等都需要切换,耗费资源较大,效率要差一些。
  • 并发性:进程的并发性较低,线程的并发性较高。
  • 健壮性:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃导致整个进程都死掉。所以多进程要比多线程健壮。

8. 僵尸线程 & 孤儿线程

  • 僵尸进程
    僵尸进程是指当前进程运行结束后,其父进程仍在运行并且父进程没有清理已经结束的子进程,导致子进程的进程描述符仍然保存在系统中。
    僵尸进程的危害:
    如果父进程不调用wait / waitpid清理子进程的话, 那么子进程的进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用进程号而导致系统不能产生新的进程。
  • 孤儿进程
    当前进程仍在运行时其父进程运行结束了,或者一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
    孤儿进程的处理:
    孤儿进程将被 init 进程( 进程号为1) 所收养,并由内核 init 进程对它们完成状态收集工作,因此孤儿进程并不会有什么危害。

9. 动态分配内存

内存分为两部分:

  • 栈:在函数内部声明的所有变量都将占用栈内存。
  • 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。

在无法提前预知需要多少内存来存储某个定义变量中的特定信息,即所需内存的大小需要在运行时才能确定时,我们就需要进行动态内存分配

10. epoll 和 select

略 —— 后面单独写一个文章讲这个问题

11. 单例模式

略 —— 后面单独写一个文章讲这个问题

二、算法题

  1. 找出不同的数字是那个
  2. 删除链表中倒数第 n 个元素

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

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

相关文章

centos7 安装git

一、查看是否安装过git git --version若出现以上版本号&#xff0c;则代表已经安装了git&#xff0c;不需要再次安装了&#xff0c;git安装&#xff0c;分为用yum安装和下载git源码编译安装&#xff0c;以下两种方法&#xff1a; 二、使用yum安装git yum -y install git安装…

磨金石教育摄影技能干货分享|如何在纪实摄影中体现艺术内涵

纪实摄影往往是摄影师在生活中或者旅行中随手拍下的&#xff0c;记录人们平常的瞬间。这类摄影往往强调真实性&#xff0c;在技巧上不会过多的追求。但有时候摄影师为了体现照片中更多的内涵&#xff0c;或者个人的情感思想&#xff0c;会运用一些摄影技巧来表现。下面就让我们…

动态内存与动态内存函数详解

文章目录前言一、动态内存函数的介绍1.malloc函数2.calloc3.realloc4.free二、两种常见的内存申请方法1.返回指针2.传二级指针三.常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分…

6. 描述性统计函数:summary 、Fivenum、describe、describeBy、stat.desc、 Aggregate、summaryBy

b站课程视频链接&#xff1a; https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新&#xff0c;但是要花钱&#xff0c;我花99&#x1f622;&#x1f622;元买了&#xff0c;感觉讲的没问题&#xff0c;就是知识点结构有点乱&#xff0c;有点废话&#xff09;&…

ESP32设备驱动-ADXL345三轴加速计驱动

ADXL345三轴加速计驱动 文章目录 ADXL345三轴加速计驱动1、ADXL345介绍2、硬件准备3、软件准备4、驱动实现1、ADXL345介绍 ADXL345 是一款小型、薄型、低功耗、3 轴加速度计,具有高达 16g 的高分辨率(13 位)测量值。数字输出数据采用 16 位二进制补码格式,可通过 SPI(3 线…

C进阶:动态内存函数 malloc calloc realloc free及常见动态内存开辟错误

本文主要讲解动态内存开辟的有关知识。 目录 一.malloc 与 free 1.malloc 2.free 3.实例&#xff1a; 二.calloc 三.realloc 四.常见的动态内存错误 1.对NULL指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放一块动态…

springboot 构建多模块项目

新建 spring initializr 父项目 Spring 官方提供了 Spring Initializr 来引导大家快速构建一个应用项目。在此不细说。 idea 创建 1、 new – project 注意jdk版本 和 勾选 default,然后next 2、 填写项目信息 3、选择项目组成部分,也可后期加上 4、选择项目位置 --选…

Docker入门:介绍Docker的常用命令、镜像的加载原理、Dockerfile打包、Docker网络、Docker Compose容器编排+监控

Docker入门 1&#xff09;从面向对象角度来看&#xff0c;Docker利用容器&#xff08;Container&#xff09;独立运行一个或一组应用&#xff0c;应用程序或服务运行在容器里面&#xff0c;容器就类似于一个虚拟化的运行环境&#xff0c;容器是用镜像创建出来的运行实例。就像是…

区块链笔记4--BTC实现

1 UTXO &#xff1a;区块链是一个去中心化的账本&#xff0c;比特币采用了 基于交易的账本模式。然而&#xff0c;系统中并无显示记录账户包含BTC数&#xff0c;实际上其需要通过交易记录进行推算。在比特币系统中&#xff0c;全节点需要维护一个名为 UTXO(UnspentTransaction …

Java抽象类:案例、特点、模板方法模式

一.抽象类的案例 案例&#xff1a;加油站支付卡 系统需求&#xff1a; 某加油站推出了2种支付卡&#xff1a; 1、预存1万元的金卡&#xff0c;后续加油享受8折优惠&#xff1b; 2、预存5千元的银卡&#xff0c;后续加油享受8.5折优惠。 请分别实现2种卡片进入收银系统后的…

记录每日LeetCode 2293.极大极小游戏 Java实现

题目描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums &#xff0c;其长度是 2 的幂。 对 nums 执行下述算法&#xff1a; 设 n 等于 nums 的长度&#xff0c;如果 n 1 &#xff0c;终止 算法过程。否则&#xff0c;创建 一个新的整数数组 newNums &#xff0c;新数组…

分享66个HTMLCSS源码,总有一款适合您

HTML&CSS源码 分享66个HTML&CSS源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 源码下载链接&#xff1a;https://pan.baidu.com/s/1AeVqON7byvt-ngB_U…

位段与枚举

目录 1、位段 1、位段的声明 2、位段的内存分配特点 3、位段的跨平台问题 4、位段的应用 2、枚举 1、枚举类型的定义 2、枚举的优点 3、联合体&#xff08;共用体&#xff09; 1、联合类型的定义 2、联合体的特点即大小计算 1、位段 1、位段的声明 位段的位指的是…

Pr初识01

Pr初识1.关于Pr&#xff1a;2.项目序列3.PR工作界面4.导入素材5.制式与素材管理6.剪辑与工具7.剪辑与工具&#xff08;下&#xff09;8.工具面板与时间轴面板进阶9.关键帧动画10.视频特效11.视频特效&#xff08;下&#xff09;12.音频及结合AU去除噪音13.字幕运用1.关于Pr&…

微信小程序自定义组件、组件的生命周期和组件通信(插槽)

文章目录导航路线自定义组件组建的创建和使用1.创建组件2.引用组件3. 局部引用组件4. 全局引用组件5. 全局引用 VS 局部引用6. 组件和页面的区别样式1.组件样式隔离2. 组件样式隔离的注意点3. 修改组件的样式隔离选项4. styleIsolation 的可选值数据、方法和属性1. data 数据2.…

Arduino UNO驱动 AT24C256 EEPROM存储器模块

Arduino UNO驱动 AT24C256 EEPROM存储器模块 AT24C256模块简介模块引脚定义Arduino UNO与模块接线测试代码实验结果AT24C256模块简介 AT24C256是一个串行EEPROM存储器&#xff0c;提供了256k bit256*1024 bit262144 bit32768 Byte32K Byte大小的存储空间&#xff0c;在芯片内部…

Jmeter做数据构造步骤详解

Jmeter做数据构造步骤详解引入什么是数据构造数据构造的方式数据构造的意义一、JDBC请求执行SQL语句构造数据01 环境准备&#xff1a;添加Jmeter插件02 使用步骤二、HTTP请求调用接口构造数据01 使用步骤完善脚本01 运用函数02 使用逻辑控制器和定时器03 添加响应断言自动判断构…

拒绝平庸,张扬出彩——维乐VELO Angel Revo

在赛场上就要做那个万众瞩目的明星&#xff0c;闪耀自己&#xff0c;让自己的实力让所有人看到&#xff01;作为骑行运动员&#xff0c;骑行配件当然是最能够彰显自我个性的地方&#xff0c;维乐美学系列明星产品Angel Revo正如其名&#xff0c;全面革新&#xff0c;也给了所有…

【自学Python】Python拼接字符串

Python拼接字符串 Python拼接字符串教程 Python 拼接 字符串 有两种方法&#xff1a;一种是直接把两个字符串写在一起&#xff0c;即可实现拼接&#xff0c;另一种是使用 来实现字符串的拼接。 Python拼接字符串详解 写在一起 语法 str1str2参数 参数描述str1要拼接的字…

BERT 词向量理解及训练更新

1、BERT 词向量理解 在预训练阶段中&#xff0c;词向量是在不断更新的&#xff0c;而在fine-tuning阶段中&#xff0c;词向量是固定不变的。在fine-tuning阶段中&#xff0c;我们使用预训练好的模型参数来对新的数据进行训练。 BERT模型在预训练阶段中&#xff0c;会学习词表中…