![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔试面试
力战者
力战者,天酬!
展开
-
偶遇的面试题
1.free()函数入参是一个void*指针,它是如何知道被指向的大小的?举个例子:假设你用malloc需要申请100字节,实际是申请了104个字节。把前4字节存成该块内存的实际大小,并把前4字节后的地址返回给你。 free释放的时候会根据传入的地址向前偏移4个字节 从这4字节获取具体的内存块大小并释放。2、c/c++程序如何控制执行到某个特定内存地址?如果想让程序跳转到绝对地址0x100000处执行,可以把绝对地址0x100000强制转换成函数指针,然后再用函数指针的方式调用函数就可以了。.原创 2021-10-20 11:33:05 · 328 阅读 · 0 评论 -
智能之针综述(1)
在冯诺依曼的体系结构中,一个进程必须有:代码段,堆栈段,数据段。在C++中,堆区动态内存的管理是用两对对运算符完成的:new和delete/malloc和free,new/malloc:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delete/free:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。动态内存管理经常会出现两种问题:一种是忘记释放内...原创 2021-10-18 16:08:24 · 72 阅读 · 0 评论 -
2021-01-30
1.左值和右值首先,左值和右值是表达式的属性。C++中的表达式,不是左值就是右值。左值可以位于赋值语句的左侧,而右值则不能;可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值;当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。需要右值的地方可以用左值代替,但不能把右值当成左值使用。介绍完左值右值,接下来介绍左值引用和右值引用。2.左值引用左值引用就是我们平常使用的“引用”。引用是为对象起的别名,必须被初始化,与变量绑定到一起,且将一直绑定在一起。我们通过 &转载 2021-01-30 09:42:17 · 51 阅读 · 0 评论 -
绕懵逼之同步/异步 阻塞/非阻塞
被面试官绕蒙蔽了,特此整理总结一下1概念解析1.1 同步与异步概念描述同步异步概念与消息的通知机制有关。所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的.原创 2021-01-27 16:54:30 · 57 阅读 · 0 评论 -
线程池相关
参数corePoolSize :核心线程数量maximumPoolSize :线程最大线程数workQueue :阻塞队列,存储等待执行的任务 很重要 会对线程池运行产生重大影响keepAliveTime :线程没有任务时最多保持多久时间终止unit :keepAliveTime的时间单位threadFactory :线程工厂,用来创建线程rejectHandler :当拒绝处理任务时的策略他们之间的区别主要是:缓存队列-核心线程数-最大线程数之间的关系。当需要加入进.原创 2021-01-23 23:35:14 · 47 阅读 · 0 评论 -
leetcode 编写一个函数来查找字符串数组中的最长公共前缀。
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。string longestCommonPrefix(vector<string>& strs) { if (strs.empty()) return ""; std::string result = ""; for (int i = 0; i < strs[0].length(); i++) { char key = strs[0][i]; if(key .原创 2021-01-12 16:50:44 · 1178 阅读 · 0 评论 -
排序算法
冒泡:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。void bubble(int arr[],int n){ int temp = 0; for(int i = 0; i < n-1;i++){ for(int j = 0; j &l原创 2021-01-06 15:29:56 · 79 阅读 · 2 评论 -
leetcode 两数求和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案#include <hash_map>using namespace std;using namespace __gnu_cxx;class Solution {public: vector<int> twoSum(vect...原创 2021-01-05 14:52:22 · 106 阅读 · 0 评论 -
leetcode atoi函数
enum status{kvailed = 0,kinvailed};status myatoi(const char* str, int &numb) { unsigned int num; if (str == nullptr) return kinvailed; while (isspace(*str)) ++str; int sign = 1; if (*str == '-') { sign = -1; str++; } else if (*str =.原创 2021-01-04 19:59:47 · 142 阅读 · 0 评论 -
程切换问题
处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间;一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。用户级上下文:正文、数据、用户堆栈以及共享存储区;寄存器上下文:通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);系统级上下文:进程控制块task_struct、内存管理信息(mm...原创 2021-01-04 11:14:51 · 113 阅读 · 0 评论 -
单链表交换任意两个元素
思路:有两种情况,相邻和不相邻。首先找两个节点的前驱,可以通过前驱来判断是否相邻。相邻则改变3个结点的next指针,不相邻则改变4个结点的next指针。 // LinkTable.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include <iostream>#include <string>...转载 2018-09-07 10:06:25 · 5535 阅读 · 2 评论 -
给定两个字符串,求它们前后重叠的最长子串的长度,比如"abcde"和“cdefg”是"cde",长度为3。
#include <iostream>#include <string>using namespace std; //计算字符串的前缀函数int* computePrefix(const char *p, int n){ if(p == NULL || n <= 0) return NULL; int *pr = new int[n]; memse...原创 2018-09-10 11:11:15 · 1551 阅读 · 0 评论 -
海康卫视笔试 总结(struct 与 class)
今天答海康的题总体来说比较简单 1、一个类定义为定义struct sEmpty{},编译器会为它添加几个默认函数? 结构体也有自己的构造、析构、重载运算符河函数,可以简单的认为结构体是类的一种形式。 struct Student { string name; int age; }; struct Student ...原创 2018-08-21 22:08:22 · 417 阅读 · 0 评论 -
步步高笔试
步步高 若有说明:int n=2,*p=&n,*q=p;则以下非法的赋值语句是:A p=q; B *p=*q; C n=*q; D p=n;答案: D在下列说法中,哪个是错误的( )A若进程A和进程B在临界段上互斥,那么当进程A处于该临界段时,它不能被进程B中断B虚拟存储管理中采用对换(swapping)策略后,用户进程可使用的存储空间似乎增加了C虚拟存储管理中的抖动...原创 2018-08-31 15:32:27 · 2838 阅读 · 2 评论 -
C语言二维数组作为函数参数传递
转自吕小猪不坏博客---侵删 二维数组存放方式二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素…二维数组作为函数参数二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:void f(int a[3][4]); void f(int a[][4])...转载 2018-08-24 10:39:00 · 4366 阅读 · 2 评论 -
DFS 相关例题
会顶科技 两道第一行为一个整数N,用来表示球的个数第二行为一个整数M,用来表示桶的个数从第三行到第N+2行,每行有M个整数,这些整数要么为0,要么为1输出描述:输出为一个整数,输出1代表可以放入所有的球,输出0代表无法放入所有的球。示例1输入460 1 0 1 0 01 0 0 1 0 00 0 0 1 1 01 1 1 0 0 1输出1#include...原创 2018-08-24 09:13:45 · 245 阅读 · 0 评论 -
C++ 易错点总结
编写类String的构造函数、析构函数和赋值函数,已知类String的原型为: 1 2 3 4 5 6 7 8 9 10 class String { public: String(const char *str = NULL); // 普通构造函数 ...原创 2018-08-19 16:12:14 · 604 阅读 · 0 评论 -
网易内推笔试题整理
网易内推笔试编程关于ICMP: ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。ICMP数据包最大尺寸不超过64K...原创 2018-08-11 21:44:04 · 1981 阅读 · 0 评论