
常见面试题
文章平均质量分 68
宇龍_
有些白嫖党连个赞都不点甚至直接抄走了说原创,新发布的都写到专栏里吧,哎。
私聊给群号,可进Q群咨询问题。
展开
-
由联合体union引出的大小端问题
由联合体union;大小端问题原创 2022-08-07 05:00:00 · 221 阅读 · 0 评论 -
复习memcpy函数的代码实现
void* memcpy(void* pvTo, const void* pvFrom, size_t size){ assert((pvTo!= NULL) && (pvFrom!= NULL)); unsigned char* pbTo = (unsigned char*)pvTo; unsigned char* pbFrom = (unsigned char*)pvFrom; while(size-- > 0) { *pbTo++ = *pbFrom++; }.原创 2022-03-09 10:04:15 · 482 阅读 · 0 评论 -
C++初级开发面试题
针对C++小白,本人准备了一些问题(手动滑稽)//开始1、先做一个自我介绍吧;2、有没有用C++做过项目?有用过C++的哪些功能?//c++3、C++内存分配有几种方式?4、你在写代码的时候是如何分配内存的?如何释放?new 和 malloc的区别?5、有用过标准库吗?用过哪些容器?容器的区别和适用场景?vector是怎么实现动态扩容的?list和vector区别及适用场景,map,hashmap查找时间复杂度,底层实现6、什么是多态?7、智能指针8、现在要动态创建一个数组来存字符串"a.原创 2020-07-21 10:17:13 · 1137 阅读 · 5 评论 -
为什么有时候线程数超过CPU内核数会更快呢?
单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑,效率不会有提高,切换线程反倒会增加开销。为什么有时候线程数超过CPU内核数会更快呢?原因是这种程序的单个线程运算量不足以占满CPU一个内核(比如存在大量IO操作,IO比较慢,是......原创 2020-04-06 22:37:55 · 3053 阅读 · 0 评论 -
mysql笔试题(1)
有一张数据表(grade)如下:问题1:请查询出所有课程成绩均大于80分的学生姓名答案:select name from grade where grade>80 and name not in(select name from grade where grade<80) group by name;...原创 2020-03-30 21:48:12 · 299 阅读 · 0 评论 -
C++智能指针
什么是智能指针?智能指针的原理:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放,智能指针就是一种栈上创建的对象,函数退出时会调用其析构函数,这个析构函数里......原创 2020-03-26 11:21:37 · 335 阅读 · 0 评论 -
字符串常量的生命周期
结论:C++中同一字符串常量只有一份,且保存在常量存储区,其生命周期从程序运行开始到程序结束。注意:1、const char *p1 = "test1"; //是字符串常量char p2[] = "test1"; //不是字符常量,而是临时变量。2、const char * p1 = "test1";const char * p2 = "test2"; //p1...原创 2020-03-12 19:39:34 · 1568 阅读 · 0 评论 -
C++多重继承子类和父类指针转换过程中的一个易错点
这两天有个C++新手问了我一个问题,他的工程当中有一段代码执行不正确,不知道是什么原因。我调了一下,代码如果精简下来,大概是下面这个样子:class IBaseA{public: virtual void fnA() = 0; int m_nTestA;};class IBaseB{public: virtual void fnB() = 0; ......原创 2020-02-26 15:49:33 · 2151 阅读 · 3 评论 -
构造函数中调用虚函数
在基类的构造函数中调用虚函数,语法是没有问题的,但执行情况可能不太一样。下面举例说明:class Base{public: Base() { Test(); } virtual void Test() { printf("Base Test\n"); }};class Car : public Ba...原创 2020-02-26 13:57:32 · 1667 阅读 · 0 评论 -
字节对齐的原因及计算方法
看了网上很多的相关文章,反而容易搞迷糊,在此详细总结一下,不明白的朋友可以在下方留言。一、为什么需要字节对齐?因为各个硬件平台对存储空间的处理上有很大的不同,一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台...原创 2020-02-24 10:31:46 · 1384 阅读 · 1 评论 -
中小型公司C++面试问题
中小型公司一般面试会倾向于问一些比较有工程性、实用性的问题一、C++有哪些存储区1、栈区(先进后出)由编译器自动分配释放,存放函数的参数值,局部变量值等,其操作方法类似数据结构中的栈。2、堆区这里的内存是由程序员自己管理的,例如:申请内存、释放内存malloc free new delete alloc destroy若程序员不释放,程序结束时可能由OS回收。3、静...原创 2020-02-20 14:14:50 · 656 阅读 · 0 评论 -
符号扩展
符号扩展是指计算机对于小字节转换成大字节的规则。比如char(1字节)转换成int(4字节),多出来的3个字节到底填充什么?规则如下:当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0,即全填充0。上面那句话的本意是指:负数扩展后,还是负数,且值不变;正数扩展后还是正数,值不变。看似简单的一句话,可常在面试中让人困惑不已...原创 2019-09-09 20:29:33 · 24284 阅读 · 2 评论 -
简易string类的实现
在面试的时候,经常会让写一个字符串类,看似很简单的问题,其实经常出错。闲来没事,就写个简单字符串类吧。功能实现容量的概念,size和capacity构造、析构、拷贝构造重载=,+,[]运算符swap交换函数,push_back,pop函数扩容函数右值引用小难点高效的swap交换空字符串类的形式扩容实现必须使用友元函数的operator+右值引用的...原创 2019-08-29 21:31:14 · 9880 阅读 · 0 评论 -
一道有趣的C语言面试题
今天在吃晚饭的时候玩儿手机,无意间看到一道题,出处未知。这里来考考大家^_^: signed char a = (unsigned char)-1; unsigned char b = a; int c = a; int d = b; printf("%d %d %d %d", a, b, c, d);求输出?各位不用敲代码,猜猜看?...原创 2019-08-28 22:21:59 · 9893 阅读 · 0 评论 -
C++面试题(1)
1、链表反转 我的前一篇面试题有相关的,就不写了2、实现函数查找数组中第二大的数字(关键点——把前两个最大的数都保存起来)//找出第二大的数int search_sec(int *arr, int len){ int ret[2] = { 0,0 }; for (int i = 0; i < len; ++i) { if (ar...原创 2019-06-14 21:49:31 · 10045 阅读 · 0 评论 -
二维数组的本质
在C/C++中无论是几维的数组,那必然是连续的内存空间。那对于二维数组,是怎么解释的呢?我们可以这样理解:实则上二维数组也是一个一维的数组,比如int a[5][4] ,这个数组的长度是5,每一个元素又都是一个数组int[4]。从以下代码可以证明二维数组是连续空间,而且正如上面描述的那样:int main(){ int a[5][5]; for (int i...原创 2019-06-02 22:08:30 · 11337 阅读 · 0 评论 -
二分查找
二分查找法是非常高效的查找算法(时间复杂度为O(log2n)),使用该算法的前提是,容器是有序的。实现二分查找的难点在于 确定 循环终止条件这里的代码是用C语言写的,在C中int和int相除是会自动向下取整的 也就是假设相除结果为8.9但实际上也是8整个代码如下://////////////////////////////////////////////////////////...原创 2019-06-01 11:17:48 · 366 阅读 · 0 评论 -
static关键字总结
1.隐藏。(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。加了static的变量或者函数则只是当前文件可见,所以可以利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。2.static的第二个作用是保持变量内容的持久。(static变量中的记忆功能和全局生存期)存储在静态数据区的变量会......原创 2019-05-31 21:43:32 · 331 阅读 · 0 评论 -
extern的作用
1、声明外部的变量 由于编译是对单个的文件进行编译,所以在编译一个a.cpp文件的时候,若是要在a.cpp中使用b.cpp中的变量,直接使用则编译肯定会报错的,所以这个时候应该永extern修饰在a.cpp中所使用的b.cpp中的变量,这个时候编译器会忽略这个错误,直到链接的时候("将文件融为一体")会找到b.cpp中的变量,这样便ok了。extern的作用相当于让编译器在编译阶段忽...原创 2019-05-30 22:14:21 · 13577 阅读 · 0 评论 -
char[0]不是你想用想用就能用
前言新了解char[0]的少年们很愉悦的将其应用到了项目中,多看一条注意事项可以减少不必要的痛苦。引言在C语言中char[0]是一种数组的特殊用法,用于标记一个指针在一个结构体最后:例如:struct node{int number;//后面的数据长度char data[0];//这是一个指针,不占空间}sizeof(node)就等于sizeof(int);更......原创 2019-04-14 21:42:32 · 13656 阅读 · 0 评论 -
计算类占用的字节
类的大小计算的时候,只包括:1、类的非静态成员数据的类型大小之和.2 、如果有虚函数的话,还要加上指向虚函数的指针(vptr)大小3、 边缘调整后的大小(内存对齐)4 、与类中的构造函数,析构函数以及其他的静态的以及非静态的成员函数无关.总结起来就是: 两个有关(非静态成员有关,虚函数有关),两个无关(与非虚函数无关,静态成员变量无关),内存对齐...原创 2019-03-20 21:45:03 · 9608 阅读 · 0 评论 -
strcpy和memcpy的区别与实现
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。strc......原创 2019-03-15 16:06:12 · 343 阅读 · 0 评论 -
指向自己的指针
最近在面试的时候碰到了这样一道题,代码如下:代码如下,求所有打印的结果#include <vector>#include <string>#include <iostream>using namespace std;struct Test{ int i; int *p;};int main(int argc, char...原创 2019-03-12 16:03:28 · 10992 阅读 · 3 评论 -
bind,bind1st,bind2nd的使用
在c++中经常用到bind等相关函数,这里仅举例说明一下相关函数的使用方法。先看一段简单的代码:#include <iostream>#include <algorithm>#include <functional>using namespace std;void printInt(int a,int b,int c){ cout...原创 2019-03-11 22:59:33 · 702 阅读 · 3 评论 -
迭代器失效——vector,map
一、vector的迭代器失效的情况,代码如下:#include <vector>#include <iostream>using namespace std;int main(){ vector<int> v; for(int i=0;i<10;i++) v.emplace_back(i); a...原创 2019-03-10 22:09:49 · 374 阅读 · 0 评论 -
C语言常用函数——笔试常用
在公司笔试时经常需要调用或者实现c语言中的一些函数。主要包括:1、字符串处理函数。2、内存操作函数。字符串处理函数:size_t strlen(const char *s);/*功能:计算指定指定字符串s的长度,不包含字符串结束符‘\0’参数:s:字符串首地址返回值:字符串s的长度,size_t为unsigned int类型*//*char *strcpy(char *de...原创 2019-03-06 23:12:43 · 10377 阅读 · 0 评论 -
C/C++ 中 const 修饰符用法总结
const修饰符,是平时编程中经常用到的,也是面试容易出现的基础题,故非常有必要来一个全面的总结——共9个要点。 const 用法总结const 变量 const int a; 不能修改值,必须初始化 const 类对象 const MyClass a; 不...原创 2019-03-06 22:49:45 · 363 阅读 · 0 评论 -
c++笔试题汇总
文章中有一些小错误,但是基本上问题不大。面试前必看今天去笔试才发现很多基本的东西都忘记了,以后面试前要看看这篇文章了!唉,老了!①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,......原创 2019-03-05 09:49:21 · 1292 阅读 · 0 评论 -
【C++菜鸟问题】C++浮点数(float、double)比较、相等判断
浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。1、将字符串转换为float、double过程存在精......原创 2019-03-05 09:30:45 · 7767 阅读 · 0 评论