牛客后端开发面试题1

滴滴2022

1.redis过期策略

定时删除,定期删除,惰性删除

定时删除:设定一个过期时间,时间到了就把它删掉,对cpu不太友好,但是对内存友好

定期删除:每隔一个周期删除一次,对cpu和内存都比较友好

惰性删除:等需要查找的时候再看它是否过期,过期了再删,对cpu友好但是对内存不友好

2.Mysql索引应用场景

索引好是好能提高查找效率,但它也是有资源消耗的。

频繁需要查找的列;

唯一性低的列(性别不需要,学号需要);

经常需要排序、分组、联查的列;

数据重复度低的列。

需要注意的是,对于比较小的表,没有索引查找效率也高,对于大表,有索引可能查找效率也低,这时可能需要分库分表。

3.Tcp和Udp的区别

tcp是面向连接,udp无连接

tcp传递数据包大小不限,udp最大传64k

tcp可靠,udp不可靠

tcp头部20字节,udp头部8字节

4.手撕代码:合并两有序数组

注意是把其中一个数据合并到另一个数组里还是把两个数组的数据放到一个新数组里。

使用双指针遍历,当一个数组数据遍历完了而另一个没完需要再把剩余的数据加进去

void merge(int A[], int m, int B[], int n) {int i=m-1;int j=n-1;int k=m+n-1;while(i>=0&&j>=0){if(A[i]>B[j])A[k--]=A[i--];elseA[k--]=B[j--];}if(j>=0){while(j>=0){A[k--]=B[j--];}}}

腾讯2021

1.如何在数据库创建一个表

CREATE TABLE `class` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(30) DEFAULT NULL,

`gender` INT(3) DEFAULT NULL,

`subject` VARCHAR(30) DEFAULT NULL,

`score` INT(3) DEFAULT 0,

PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.创建后如何添加一个记录、删除一个记录

添加一个记录:insert stu('id','name') with value(1,'he');

删除一个记录:delete from stu where id=1;

 3.编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配

可以通过重载new和delete运算符来控制内存的分配和释放

4.编写实现malloc()内存分配函数功能一样的代码 

typedef struct _mem_block
{size_t size;             // 分配的内存块大小(不包括头部)int free;                // 是否空闲struct _mem_block *next; // 下一个内存块
} mem_block;
mem_block *head = nullptr; // 内存块链表头指针
// 分配内存
void *malloc(size_t size)
{mem_block *block, *last;void *result;           // 对齐到 8 字节size = (size + 7) & ~7; // 查找可用内存块last = nullptr;for (block = head; block != nullptr; last = block, block = block->next){if (block->free && block->size >= size){ // 找到合适的内存块block->free = 0;result = (void *)(block + 1);if (block->size - size >= sizeof(mem_block)){ // 剩余空间足够大,可以切割出新的内存块mem_block *new_block = (mem_block *)((char *)block + sizeof(mem_block) + size);new_block->size = block->size - size - sizeof(mem_block);new_block->free = 1;new_block->next = block->next;block->next = new_block;block->size = size;}if (last != nullptr && last->free){ // 合并前一个空闲内存块last->size += sizeof(mem_block) + block->size;last->next = block->next;block = last;}return result;}} // 找不到可用内存块,分配新的内存块block = (mem_block *)sbrk(sizeof(mem_block) + size);block->size = size;block->free = 0;block->next = nullptr;if (last != nullptr){last->next = block;}else{head = block;}return (void *)(block + 1);
}

5.请编写能直接实现strstr()函数功能的代码

函数的功能是在一个字符串中查找另一个字符串,并返回第一次出现的位置

int SearchStr(char* s1, char* s2)
{if (s2 == '\0') return 0;int i = 0;while (s1 != '\0'){int k = i;int j = 0;while (s1 != '\0' && s2 != '\0' && s1[i] == s2[j]){i++;j++;if (s2[j] = '\0')return k;}i++;}return -1;
}

6.static关键字的作用

C语言中,主要定义全局静态变量,定义局部静态变量,定义静态函数。

定义全局静态变量:在全局变量前面加上关键字static

特点:在全局数据区内分配内存;如果没有初始化,默认值为0;该变量从定义到本文本结束可见;

定义局部静态变量:在局部变量前面加上关键字 static

特点:在全局数据区内分配内存;如果不显示初始化,会被隐式初始化为0;它始终驻留在全局数据去,直到程序结束;其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

定义静态函数:函数前面加上static   

特点:静态函数只能在本源文件使用;

在文件作用域中声明的inline 函数默认为 static

C++语言中新增两种作用:定义静态数据成员,定义静态成员函数

静态成员数据特点:在程序的全局数据区分配内存;静态数据成员定义时要分配空间,所以不能在类声明里定义;

静态成员函数特点:静态成员函数与类相联系,不与类的对象相联系。静态成员函数不能访问非静态数据成员。原因很简单,非静态数据成员属于特定的类实例,主要用于对静态数据成员的操作。

静态成员函数和静态数据成员都没有 this 指针 

7.写string类的构造,析构,拷贝函数

class Mystring
{
public:
    Mystring(){}
    Mystring(const char* s)
    {
        str = new char[strlen(s) + 1];
        strcpy_s(str,strlen(s)+1, s);
    }
    Mystring(const Mystring& s)
    {
        this->str = new char[strlen(s.str) + 1];
        strcpy_s(this->str, strlen(s.str) + 1, s.str);
    }
    ~Mystring()
    {
        if (str != nullptr)
        {
            delete str;
            str = nullptr;
        }
    }
private:
    char* str;
};

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

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

相关文章

软件开发模型学习整理——瀑布模型

一 前言 从参加工作至今也完整的跟随过一整个项目的流程了,从中也接触到了像瀑布模型,迭代模型,快速开发模型等。介于此,基于自己浅薄的知识对瀑布模型进行整理学习以及归纳。 二 瀑布模型简介 2.1 瀑布模型的定义和特点 定义&…

这应该是最全的大模型训练与微调关键技术梳理

作为算法工程师的你是否对如何应用大型语言模型构建医学问答系统充满好奇?是否希望深入探索LLaMA、ChatGLM等模型的微调技术,进一步优化参数和使用不同微调方式?现在我带大家领略大模型训练与微调进阶之路,拓展您的技术边界&#…

动态规划习题

动态规划的核心思想是利用子问题的解来构建整个问题的解。为此&#xff0c;我们通常使用一个表格或数组来存储子问题的解&#xff0c;以便在需要时进行查找和使用。 1.最大字段和 #include <iostream> using namespace std; #define M 200000int main() {int n, a[M], d…

死锁 + 条件变量 + 生产消费者模型

文章目录 死锁如何解决死锁问题呢&#xff1f;避免死锁 同步概念1.快速提出解决方案 --- 条件变量原理接口2. CP问题 --- 理论3. 快速实现CP 死锁 现象 &#xff1a; 代码不会继续往后推进了 问题 一把锁有没有可能产生死锁呢&#xff1f; 有可能 线程第一次申请锁成功&…

【node】使用 sdk 完成短信发送

实现效果 过程 流程比较复杂&#xff0c;加上需要实名认证&#xff0c;建议开发的时候先提前去认证号账号&#xff0c;然后申请模版也需要等认证。 源码 我看了新版的sdk用的代码有点长&#xff0c;感觉没必要&#xff0c;这边使用最简单的旧版的sdk。 https://github.com/…

智能优化算法应用:基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.秃鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

基于ssm电子资源管理系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 基于ssm电子资源管理系统源码和论文758 摘要 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门…

jmeter,http cookie管理器

Http Cookie管理器自动实现Cookie关联的原理&#xff1a; (默认:作用域在同级别的组件) 一:当Jmeter第1次请求服务器的时候,如果说服务器有通过响应头的Set-Cookie有返回Cookie,那么Http Cookie管理器就会自动的保存这些Cookie的值。 二&#xff1a;当Jmeter第2-N次请求服务器的…

Redis 过期删除策略、内存回收策略、单线程理解

不知从何开始Redis的内存淘汰策略也开始被人问及&#xff0c;卷&#xff01;真的是太卷了。难不成要我们去阅读Redis源码吗&#xff0c;其实问题的答案&#xff0c;在Redis中的配置文件中全有&#xff0c;不需要你阅读源码、这个东西就是个老八股&#xff0c;估计问这个东西是想…

HNU-计算机网络-实验3-应用层和传输层协议分析(PacketTracer)

计算机网络 课程基础实验三应用层和传输层协议分析&#xff08;PacketTracer&#xff09; 计科210X 甘晴void 202108010XXX 【给助教的验收建议】 如果是助教&#xff0c;比起听同学读报告&#xff0c;更好的验收方式是随机抽取一个场景&#xff08;URL/HTTPS/FTP&#xff09…

Vue3-12- 【v-for】循环一个整数

说明 v-for 这个东西就很神奇&#xff0c;可以直接循环一个整数&#xff0c;而且循环的初始值是从1 开始。使用案例 <template><div v-for"(num,indexB) in 6" :key"indexB">【索引 {{ indexB }}】 - 【数字 {{ num }}】 </div></t…

直播传媒公司网站搭建作用如何

直播已然成为抖快等平台的主要生态之一&#xff0c;近些年主播也成为了一种新行业&#xff0c;相关的mcn机构直播传播公司等也时有开业&#xff0c;以旗下主播带来高盈利&#xff0c;而在实际运作中也有一些痛点难题&#xff1a; 1、机构宣传展示难 不少散主播往往会选择合作…

湖农大邀请赛shell_rce漏洞复现

湖农大邀请赛 shell_rce 复现 在 2023 年湖南农业大学邀请赛的线上初赛中&#xff0c;有一道 shell_rce 题&#xff0c;本文将复现该题。 题目内容&#xff0c;打开即是代码&#xff1a; <?phpclass shell{public $exp;public function __destruct(){$str preg_replace…

KaiwuDB × 国网山东综能 | 分布式储能云边端一体化项目建设

项目背景 济南韩家峪村首个高光伏渗透率台区示范项目因其所处地理位置拥有丰富的光照资源&#xff0c;该区域住户 80% 以上的屋顶都安装了光伏板。仅 2022 年全年&#xff0c;光伏发电总量达到了百万千瓦时。 大量分布式光伏并网&#xff0c;在输出清洁电力的同时&#xff0c…

Gerrit 提交报错missing Change-Id in message footer

直接执行提示的命令&#xff1a; gitdir$(git rev-parse --git-dir); scp -p -P 29418 liyjgerrit.ingageapp.com:hooks/commit-msg ${gitdir}/hooks/ 如果报错&#xff1a; subsystem request failed on channel 0 在.git/hooks目录下看有没有生成commit-msg文件&#xff…

测序名词解释

测序深度&#xff08;Sequencing Depth&#xff09;是指&#xff1a;测序得到的碱基总量&#xff08;bp&#xff09;与基因组&#xff08;转录组或测序目标区域大小&#xff09;的比值&#xff0c;是评价测序量的指标之一。 测序深度的计算公式为&#xff1a; 测序深度 &…

一点技术细节

匈牙利算法&#xff1a; 14-4: 匈牙利算法 Hungarian Algorithm_哔哩哔哩_bilibili 课件&#xff1a;https://github.com/wangshusen/AdvancedAlgorithms.git SWin transformer&#xff1a; Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili patch:灰色 窗口&…

数据结构之---- 回溯算法

数据结构之---- 回溯算法 什么是回溯算法&#xff1f; 回溯算法是一种通过穷举来解决问题的方法&#xff0c;它的核心思想是从一个初始状态出发&#xff0c;暴力搜索所有可能的解决方案&#xff0c;当遇到正确的解则将其记录&#xff0c;直到找到解或者尝试了所有可能的选择都…

day01-报表技术POI

前言 报表[forms for reporting to the higher organizations]&#xff0c;就是向上级报告情况的表格。简单的说&#xff1a;报表就是用表格、图表等格式来动态显示数据&#xff0c;可以用公式表示为&#xff1a;“报表 多样的格式 动态的数据”。 1、开发环境搭建 功能说…

图扑物联 | WEB组态可视化软件

什么是组态&#xff1f; 组态的概念来自于20世纪70年代中期出现的第一代集散控制系统&#xff08;Distributed Control System&#xff09;&#xff0c;可理解为“配置”、“设置”等&#xff0c;是指通过人机开发界面&#xff0c;用类似“搭积木”的简单方式来搭建软件功能&a…