- 博客(69)
- 收藏
- 关注
原创 面试记录-C++软件开发
线程池是一种线程管理的概念,它主要用于优化多线程应用程序的性能和资源利用因为在多线程中创建和销毁线程是一个开销较大的操作。线程池通过预先创建一组线程,并将任务提供给这些线程来执行,从而避免了重复创建和销毁的开销。线程池可以限制并发线程的数量,避免资源过度占用,从而更好地管理系统资源。没啥好讲的很简单。
2023-08-30 21:55:10 315
原创 面试之快速学习C++14
文章参考:https://zhuanlan.zhihu.com/p/588826142?utm_id=0最近学了一会感慨到找工作好难,上周面试了一家医疗公司,准备攒攒经验但是不去,结果三天了没消息,感觉一面都没过…本来自傲看不上,结果人家也看不上你…没事攒攒经验,面试官问了是否会C++14我说我不会,问题不大,现在看看来得及~
2023-08-27 18:08:25 459
原创 面试之快速学习STL-常用算法
而如果想查找序列 C 在序列 A 中第一次出现的位置,既可以使用 search() 函数,也可以使用 search_n() 函数。2. partial_sort采用的堆排序(heapsort),它在任何情况下的复杂度都是n*log(n). 如果你希望用partial_sort来实现全排序,你只要让middle=last就可以了。1 . partial_sort() 函数会以交换元素存储位置的方式实现部分排序的。序列 A:1,2,3,4,4,4,1,2,3,4,4,4。序列 C:4,4,4。
2023-08-22 21:23:50 337
原创 面试-快速学习计算机网络-UDP/TCP
TCP 是面向流,没有界限的一串数据。TCP 底层并不了解上层业务数据的具体含义,它会根据 TCP 缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被 TCP 拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP 粘包和拆包问题。要发送的数据小于 TCP 发送缓冲区的大小,TCP 将多次写入缓冲区的数据一次发送出去,将会发生粘包。要发送的数据大于 TCP 发送缓冲区剩余空间大小,将会发生拆包。
2023-08-21 23:06:32 1592
原创 面试之快速学习STL-容器适配器
greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数,其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了),所以调用的是fun()?//升序队列//降序队列如果自己想模拟less和greater,那么使用的方法应该是这样:while (!pq3.pop();/*12345*/如果是个自定义类,也可以在自定义类里面自己重载运算符tmp1 t1{2};while (!
2023-08-19 16:47:58 466
原创 面试之快速学习STL-无序关联式容器
例如关键字序列为{421,423,436},对各个关键字进行平方后的结果为{177241,178929,190096},则可以取中间的两位{72,89,00}作为其哈希地址。如果 n 大于当前容器使用的桶数,则该方法会是容器重新哈希,该容器新的桶数将等于或大于 n。: 果关键字由多位字符或者数字组成,就可以考虑抽取其中的 2 位或者多位作为该关键字对应的哈希地址,在取法上尽量选择变化较多的位,避免冲突发生。将容器使用的桶数(bucket_count() 方法的返回值)设置为最适合存储 n 个元素的桶数。
2023-08-17 22:02:24 309
原创 面试之快速学习STL-map
关联式容器所具备的这些特性,归咎于 STL 标准库在实现该类型容器时,底层选用了 「红黑树」除此之外,C++ 11 还新增了 4 种哈希容器,即 unordered_map、unordered_multimap 以及 unordered_set、unordered_multiset。严格来说,。
2023-08-16 22:54:38 323
原创 面试之快速学习STL-deuqe和list
deque并不是真的连续,是通过迭代器的操作符重载实现的所谓序列化容器。deque是靠两个迭代器和一个指针数组实现的。
2023-08-16 22:21:20 658
原创 面试之快速学习C++11-完美转发,nullptr, shared_ptr,unique_ptr,weak_ptr,shared_from_this
上述 T 为int &。那么整个为 int & &&-> int &回到完美转发,假设现在我需要转发a,那么注意一下实现完美转发需要这样写forward大致实现原理注意其实std::move底层实现也是 static_cast。
2023-08-15 21:30:16 533
原创 面试之快速学习C++11 - 右值 移动构造 std::move
6.当右值去初始化一个对象的时候,那么会优先调用移动构造函数,那么如果想用左值初始化,就需要move()方法了。实际上在b引用a之后,后面所看到的b都是*(&a)所以无法赋值。你会在拷贝完右值之后,把他的指针 d.num = NULL;好吧好吧和这次的内容关系不大~
2023-08-10 22:46:32 369
原创 面试之快速学习C++11- constexpr以及constexpr和const区别
可以看到,在 myType 结构体中自定义有一个构造函数,借助此函数,用 constexpr 修饰的 myType 类型的 my 常量即可通过编译。前面提到,constexpr 可用于修饰函数,而类中的成员方法完全可以看做是“位于类这个命名空间中的函数”,所以。注意,这个函数是无法通过编译的,因为该函数的返回值用 constexpr 修饰,但函数内部包含多条语句。:const和consexpr都是用来定义常量的。,只不过此函数必须满足前面提到的 4 个条件。:const声明的常量,
2023-08-08 21:44:02 384
原创 面试之快速学习SQL-基础增删改查语句
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。ORDER BY 语句用于根据指定的列对结果集进行排序。ORDER BY 语句默认按照[升序]对记录进行排序。我们在例子中的条件值周围使用的是单引号。
2023-08-07 22:33:52 1318
原创 面试之快速学习c++11- 列表初始化和 lambda匿名函数的定义
定义一个 lambda 匿名函数很简单,可以套用如下的语法格式:[外部变量访问方式说明符] (参数) mutable noexcept/throw() -> 返回值类型 {函数体;1) [外部变量方位方式说明符][ ] 方括号用于向编译器表明当前是一个 lambda 表达式,其不能被省略。在方括号内部,可以注明当前 lambda 函数的函数体中可以使用哪些“外部变量”。所谓外部变量,指的是和当前 lambda 表达式位于同一作用域内的所有局部变量。2) (参数)
2023-08-07 21:52:58 467
原创 面试之快速学习c++11-函数模版的默认模版参数,可变模版,tuple
/学习地址: http://c.biancheng.net/view/3730.html。
2023-08-05 18:05:33 485
原创 面试之快速学习c++11 - C++返回值类型后置(跟踪返回值类型) 和 using
学习地址: http://c.biancheng.net/view/3730.html。
2023-08-03 21:17:41 593
原创 6.N 字形变换
中间的行是 delta1 = delta(比第一行少2);第一行和最后一行的是 delta = (numRows-1) *2;没什么好说的,找规律,
2023-04-16 17:49:21 93
原创 背包问题--Leecode
377.组合总和 Ⅳ给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。示例:nums = [1, 2, 3]target = 4所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。这题我一看就是背...
2020-03-11 15:07:01 244
原创 354. 俄罗斯套娃信封问题--Leecode刷题(关于最长递增子序列)
给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:...
2020-03-03 13:50:54 212
原创 347.前K个高频元素(Leecode刷题)
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]这题的思路是:1.首先要统计每个数字的次数,unordered_map当仁不让。2.我们要选出前K大,很熟悉,priority_queue可以。思路很简单,但...
2020-03-01 15:09:51 225
原创 redis学习-字典
基本说明字典,是一种用于保存键值对的抽象数据结构。字典在redis中的应用相当广泛,比如redis的数据库就是使用字典来作为底层实现。比如我执行命令:set msg “hello world”实际上就是保存在数据库的字典里面的。哈希键的底层实现也是字典。字典的实现Redis的字典使用哈希表作为底层实现,一个哈希表里面有很多哈希表节点,每个哈希表节点就保存了字典中的一个键...
2020-02-07 16:43:56 211
原创 Redis学习-简单动态字符串SDS
SDS(simple dynamic string)简单动态字符串SDS与C语言字符串在redis用法上的区别:C语言字符串用于字符串不被修改的地方,如日志输出SDS是一个可以被修改的字符串,如键,值结构体保存在sds.h/sdsdr文件中struct sdhdr{ //记录buf数组中已经使用的字节的数量 int len; //记录buf数组中未使用的数量...
2020-02-06 17:01:51 187
原创 Redis基本内容总结
Redis基本信息1.redis支持16个数据库(0,1,2…15)2.单个key的大小支持512M3.中文错误时127.0.0.1:6379> set China 中国OK127.0.0.1:6379> get China“\xe4\xb8\xad\xe5\x9b\xbd”解决 加-raw[root@localhost redis]# ./bin/redi...
2020-02-06 16:20:19 243
原创 324. 摆动排序 II
给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。示例 1:输入: nums = [1, 5, 1, 1, 6, 4]输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]示例 2:输入: nums = [1, 3, 2, 2, 3, 1]输出: 一个可能的答案是 [2, ...
2020-01-15 16:47:13 161
原创 316. 去除重复字母
给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”分析:这道题就是,第一去重复,第二就是选择最小的字符串。去重复倒是不难,主要是如何选择最小的字符串?首先,有几点要明确:...
2019-12-31 13:02:58 291
原创 动态规划大法--Leecode刷题
心情:一如既往,只要困难就凉凉…题目描述:有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left...
2019-12-24 13:40:33 233
原创 线段树---初识
之前翻帖子有大概的听过这样一种数据结构,今天刚好刷题遇到了,记录一下自己写的吧!(没有加懒惰标记!!!)class NumArray {public: int tree[100000] = {0}; int n = 0; void buildTree(vector<int> &num,int l,int r,int rt){ if(...
2019-12-19 14:58:06 109
原创 301. 删除无效的括号--Leecode刷题
刷了一个困难题,一如既往做不出来,然后看题解,然后再自己打一遍…记录这个题的原因是,这其实是一类题目!!!先看看题目再分析。题目描述:删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: “()())()”输出: ["()()()", “(())()”]示例 2:输入: “(a)())()”输出...
2019-12-17 09:48:29 165
原创 5286. 网格中的最短路径--Leecode刷题
周赛的时候的题目:每次周赛基本上第四道题都做不出来,除了感慨自己菜以外,还会感叹那些做的很快的大佬,是真的很厉害了!!!题目描述:给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步...
2019-12-16 11:24:44 615
原创 300. 最长上升子序列--LeeCode刷题(误用单调栈,反思)
心情:哇!最近刷题越来越不顺心了,这道题不难吧!但是却花了很长时间…题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。自己的想法:我看到这道题首先理解题目的意思:在当前位置的前面,有多少数比当前数字小,且这些小的数字逐渐递增,而我想...
2019-12-12 11:47:29 573
原创 堆结构的应用--Leecode刷题
我记得以前做题就经常碰到堆,但是也没有记录过什么,今天决定记录一下堆的应用!1.找中位数295. 数据流的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整...
2019-12-10 10:42:41 187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人