C++后台面试常考

一、C/C++方面

1、说说C++中的多态及其实现;

https://blog.csdn.net/u010864559/article/details/70242984  

https://blog.csdn.net/menyangyang/article/details/24779257

2、volatile关键字;

volatile提醒编译器它后面所定义的变量随时都有可能改变 ,因此编译后的程序每次需要存储或读取这个变量的时候 ,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储, 可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象

    https://blog.csdn.net/whatday/article/details/52511071

3、带虚函数与否的空类大小;

    不带虚函数:sizeof为1;带虚函数:sizeof为4(32位)。

https://blog.csdn.net/dahai_881222/article/details/7856525

4、字节对齐;

    https://blog.csdn.net/gykimo/article/details/8809129

5、大小端字节序(如何判断);

    https://blog.csdn.net/a1414345/article/details/52156766

6、#pragma once的作用?

避免同一个文件被include多次

https://blog.csdn.net/slimfox/article/details/1565950

7、static、const的用法?

    https://blog.csdn.net/jobbofhe/article/details/50981700

8、拷贝构造函数与拷贝复制函数需要注意的事项?

    https://blog.csdn.net/cjy0000/article/details/37595091

9、回调函数、可重入函数;

    https://www.cnblogs.com/thinkinglife/p/5121683.html

https://blog.csdn.net/morixinguan/article/details/65494239

https://blog.csdn.net/iluzhiyong/article/details/51816641

10、智能指针、对象管理资源;

    https://www.cnblogs.com/wxquare/p/4759020.html

    https://blog.csdn.net/HLW0522/article/details/51862665

11、深拷贝和浅拷贝;

    https://blog.csdn.net/lpp0900320123/article/details/39007047

12、Singleton的正确写法;

    https://blog.csdn.net/jabony/article/details/9127237

13、类型大小(long、int等在32和64位系统中)。

             32位系统   64位系统 (单位Bytes)   

char           1                1

short          2                2

int              4                4 

指针           4                 8

long           4                 8

float          4                  4

double       8                 8

14、指针和引用

    https://blog.csdn.net/qq_27678917/article/details/70224813


二、STL方面

1、说说std::vector底层机制;

2、说说std::list的底层机制;

3、说说std::map的底层机制;

4、说说std::deque底层机制;

5、std::vector的自增长机制;

https://blog.csdn.net/TQH_Candy/article/details/52387714

6、内存池的实现;

    https://blog.csdn.net/K346K346/article/details/49538975

    https://blog.csdn.net/a987073381/article/details/52245795

    https://www.cnblogs.com/zsychanpin/p/6936810.html   

7、各容器的迭代器iterator;

    https://www.cnblogs.com/lhuan/p/5706654.html

8、std::vector插入和删除与std::list的区别;

    https://blog.csdn.net/gogokongyin/article/details/51178378


三、数据结构方面

1、二叉树前、中、后、层序遍历递归与非递归实现;

https://blog.csdn.net/will130/article/details/51488142

2、图的深搜和广搜;

    https://blog.csdn.net/u010006643/article/details/45673571

3、两个栈实现一个队列(考虑线程安全);

    https://blog.csdn.net/hanjing_1995/article/details/51539578

4、B树与B+树的区别;

    https://blog.csdn.net/random__walker/article/details/52051556

    https://blog.csdn.net/yangshuangtao/article/details/48766831

5、红黑树的性质;

    https://blog.csdn.net/Sun_TTTT/article/details/65445754

    http://blog.chinaunix.net/uid-26548237-id-3480169.html

    http://www.cnblogs.com/skywang12345/p/3245399.html

6、AVL树的单旋转;

    https://blog.csdn.net/collonn/article/details/20128205

7、分别说一下7种内部排序;

https://blog.csdn.net/jia_xu_/article/details/78166127

8、有序表查找;

    https://blog.csdn.net/sayhello_world/article/details/77200009

四、算法方面

1、逆转单链表;

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
		if(pHead == NULL || pHead -> next == NULL)
            return pHead;
        ListNode* p = pHead;
        stack<ListNode* > s;
        while(p -> next)
            {
            s.push(p);
            p = p -> next;
        }
        ListNode* head = p;
        while(!s.empty())
            {
            p -> next = s.top();
            p = p -> next;
            s.pop();
        }
        p -> next = NULL;
        return head;
    }
};

2、链表带环检测以及环入口;

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* MeetingNode(ListNode* pHead)
    {
        if(pHead==nullptr)
            return nullptr;
        
        ListNode* pSlow=pHead->next;
        if(pSlow==nullptr)
            return nullptr;
        
        ListNode* pFast=pSlow->next;
        while(pFast!=nullptr && pSlow!=nullptr)
        {
            if(pFast==pSlow)
                return pFast;
            
            pSlow=pSlow->next;
            
            pFast=pFast->next;
            if(pFast!=nullptr)
                pFast=pFast->next;
        }
        return nullptr;
    }
    
    ListNode* EntryNodeOfLoop(ListNode* pHead)
    {
        ListNode* meetingNode=MeetingNode(pHead);
        if(meetingNode==nullptr)
            return nullptr;
        
        int nodesInloop=1;
        ListNode* pNode1=meetingNode;
        while(pNode1->next!=meetingNode)
        {
            pNode1=pNode1->next;
            ++nodesInloop;
        }
        
        pNode1=pHead;
        for(int i=0;i<nodesInloop;++i)
            pNode1=pNode1->next;
        
        ListNode* pNode2=pHead;
        while(pNode1!=pNode2)
        {
            pNode1=pNode1->next;
            pNode2=pNode2->next;
        }
        return pNode1;
    }
};

3、链表排序(nlogn不退化);

    https://blog.csdn.net/one_piece_hmh/article/details/52384016

4、KMP字符串匹配;

    https://blog.csdn.net/fx677588/article/details/53406327

5、词频统计(使用trie树);

    https://blog.csdn.net/hguisu/article/details/8131559

6、lru cache(list+map);

    https://blog.csdn.net/acs713/article/details/41941541

    https://blog.csdn.net/renwotao2009/article/details/52814322

7、100亿个整型数排序(外排);

    https://blog.csdn.net/nigelyq/article/details/52766879

8、100亿个数,找出其中最小的1万个数(构造大顶堆);

https://my.oschina.net/letiantian/blog/333091

9、小范围数值排序(hash);


10、不重复数值排序(位图)。

    https://blog.csdn.net/songzitea/article/details/8759635

五、网络及其编程方面

1、IP分片和重组;

https://blog.csdn.net/github_35124642/article/details/52006185

2、TCP的3次握手、4次断开及其状态转移;

    https://blog.csdn.net/a987073381/article/details/52206215

    https://blog.csdn.net/sszgg2006/article/details/56015112

3、timewait状态;

    https://blog.csdn.net/u013616945/article/details/77510925

4、拥塞控制算法;

    https://blog.csdn.net/lishanmin11/article/details/77090316

    https://blog.csdn.net/sicofield/article/details/9708383

5、说一下地址栏输入一个URL,接下来所涉及到的全部协议,尽可能详细;

    https://blog.csdn.net/wuhenliushui/article/details/20038819/

    https://zhidao.baidu.com/question/162261722.html

6、accept、connect调用;

    https://blog.csdn.net/tennysonsky/article/details/45621341

7、select、epoll模型;

    https://blog.csdn.net/drdairen/article/details/53694550

8、说说如何设计一个tcp服务器程序(迭代、并发范型);

    https://blog.csdn.net/tennysonsky/article/details/45671215


六、LINUX及操作系统方面

1、进程和线程的区别;

    https://blog.csdn.net/zhou753099943/article/details/51771220

https://blog.csdn.net/yaosiming2011/article/details/44280797

2、堆和栈的区别;

    https://blog.csdn.net/Fiorna0314/article/details/49757195

3、fork的底层实现(写时拷贝);

    https://blog.csdn.net/hello_bravo_/article/details/52887184

    https://www.cnblogs.com/wuchanming/p/4495479.html

4、fork和vfork的区别;

    https://blog.csdn.net/jianchi88/article/details/6985326

    https://blog.csdn.net/xxpresent/article/details/51702620

5、fork炸弹及其防御方法;

    http://blog.jobbole.com/111319/

6、gdb、coredump文件使用;

    https://blog.csdn.net/sunxiaopengsun/article/details/72974548

    https://www.cnblogs.com/wangjian8888/p/5950912.html

7、查看机器负载的命令(top、ps、tcpdump、netstate、lsof等);

    https://blog.csdn.net/qq_36357820/article/details/76606113

8、什么是inode;

    https://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

    https://blog.csdn.net/u013595419/article/details/51094360

9、硬链接和软链接的区别;

    https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html

    https://www.jianshu.com/p/dde6a01c4094

10、地址转换、段页式内存管理;

    https://blog.csdn.net/xuyuefei1988/article/details/17710303

11、正则表达式

    http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

    http://www.runoob.com/regexp/regexp-syntax.html

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832260566c26442c671fa489ebc6fe85badda25cd000

七、数据库方面

1、说说数据库的4大范式;

    https://blog.csdn.net/hyqsong/article/details/52245195

    https://blog.csdn.net/yahohi/article/details/7529710

2、说说事务的4个性质;

    https://blog.csdn.net/xiaoyu714543065/article/details/8211265

http://www.360doc.com/content/16/1122/08/35497398_608435095.shtml

3、mysql中innodb和myisam这两者db引擎的区别(优点和缺点);

    https://www.cnblogs.com/kevingrace/p/5685355.html

    https://blog.csdn.net/liu857279611/article/details/51558927

4、mysql的4个隔离级别以及脏读和幻读;

    https://blog.csdn.net/johnstrive/article/details/46724315

5、查询优化有哪些方法;

    https://www.2cto.com/database/201606/514022.html

6、如何定位耗时过长的查询(使用慢查询日志);

    https://blog.csdn.net/jucrazy/article/details/6773960

    https://www.cnblogs.com/qmfsun/p/4844472.html

7、视图、索引等的作用;

    https://blog.csdn.net/u014698348/article/details/51956329

    https://www.cnblogs.com/SanMaoSpace/p/3147059.html

8、了解哪些NoSQL的db(非关系型数据库)?

    http://uule.iteye.com/blog/2144148

猜你喜欢

转载自blog.csdn.net/m0_38099899/article/details/79886981
今日推荐