2018-9-19 烽火通信C++面经

烽火通信C++面经

多线程

https://www.cnblogs.com/lyjblogs/p/7888646.html
https://www.cnblogs.com/raichen/p/5766634.html
多线程就是多个线程并发执行

https://blog.csdn.net/qq_37010006/article/details/79402256
线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。

  1. 互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获取互斥锁,在释放互斥锁之前其他线程都不能获取该互斥锁。如果其他线程想要获取这个互斥锁,那么这个线程只能以阻塞方式进行等待。
  2. 条件锁就是所谓的条件变量,某一个线程因为某个条件为满足时可以使用条件变量使改程序处于阻塞状态。一旦条件满足以“信号量”的方式唤醒一个因为该条件而被阻塞的线程。最为常见就是在线程池中,起初没有任务时任务队列为空,此时线程池中的线程因为“任务队列为空”这个条件处于阻塞状态。一旦有任务进来,就会以信号量的方式唤醒一个线程来处理这个任务。这个过程中就使用到了条件变量pthread_cond_t。
  3. 假设我们有一个两个处理器core1和core2计算机,现在在这台计算机上运行的程序中有两个线程:T1和T2分别在处理器core1和core2上运行,两个线程之间共享着一个资源。
    首先我们说明互斥锁的工作原理,互斥锁是是一种sleep-waiting的锁。假设线程T1获取互斥锁并且正在core1上运行时,此时线程T2也想要获取互斥锁(pthread_mutex_lock),但是由于T1正在使用互斥锁使得T2被阻塞。当T2处于阻塞状态时,T2被放入到等待队列中去,处理器core2会去处理其他任务而不必一直等待(忙等)。也就是说处理器不会因为线程阻塞而空闲着,它去处理其他事务去了。
    而自旋锁就不同了,自旋锁是一种busy-waiting的锁。也就是说,如果T1正在使用自旋锁,而T2也去申请这个自旋锁,此时T2肯定得不到这个自旋锁。与互斥锁相反的是,此时运行T2的处理器core2会一直不断地循环检查锁是否可用(自旋锁请求),直到获取到这个自旋锁为止。
    从“自旋锁”的名字也可以看出来,如果一个线程想要获取一个被使用的自旋锁,那么它会一致占用CPU请求这个自旋锁使得CPU不能去做其他的事情,直到获取这个锁为止,这就是“自旋”的含义。
    当发生阻塞时,互斥锁可以让CPU去处理其他的任务;而自旋锁让CPU一直不断循环请求获取这个锁。通过两个含义的对比可以我们知道“自旋锁”是比较耗费CPU的

深拷贝和浅拷贝

https://blog.csdn.net/libin66/article/details/53140284
浅拷贝是只对指针进行拷贝,两个指针指向同一个内存块,深拷贝是对指针和指针指向的内容都进行拷贝,拷贝后的指针是指向不同内的指针。

重写和重载

https://www.cnblogs.com/weizhixiang/articles/5760286.html

  1. 成员函数重载特征:
    a 相同的范围(在同一个类中)
    b 函数名字相同
    c 参数不同
    d virtual关键字可有可无
  2. 重写(覆盖)是指派生类函数覆盖基类函数,特征是:
    a 不同的范围,分别位于基类和派生类中
    b 函数的名字相同
    c 参数相同
    d 基类函数必须有virtual关键字
  3. 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
    a 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。
    b 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。

C++的优点

https://www.cnblogs.com/ckings/p/3632997.html
C++的优点:

1.代码可读性好。

2.可重用性好。

3.可移植。

4.C++设计成无需复杂的程序设计环境

5.运行效率高,高效安全

6.语言简洁,编写风格自由。

7.提供了标准库stl

8.面向对象机制

9.很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。

面向对象三大特性

这个可以回答上面的问题,继承,多态,封装

工具的使用,快捷键

VS2017,调试F5,开始执行不调试Ctrl+F5,逐语句F11,逐过程F10

第三方函数库

问到了boost,不是很了解,看了下才知道智能指针,内存池是这里的
https://www.cnblogs.com/findumars/p/7257415.html
https://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419

STL库

vector内存结构,如何分配内存
vector是连续内存,在插入数值时若内存空间不够,则新开辟一片2倍的内存空间,然后将原来的内容复制过来,插入新的数值,之后将原来的内存空间释放。

设计模式

https://blog.csdn.net/column/details/design.html
https://www.cnblogs.com/aeolian/p/7792587.html
设计模式(Design Pattern)是一套被反复使用、多数人知晓、经过分类编目的优秀代码设计经验的总结。使用设计模式是为了提高代码的重用性,是代码更易理解并保证代码的可靠性。
通常的设计模式可以概括为23种,按照特点可以将其分为三大类型:创建型、结构型、行为型。
感觉常考的有单例模式,适配器模式,观察者模式,工厂模式,以及对应的UML图,还有手写一个模式之类的。

网络编程

数据库工具

常用的MySQL,Oracle,DB2

增删改查,查询语句重点

  1. 增加
    insert into(可省略) 表名(列名) values(具体值)
    批量插入
    insert into(可省略) 表名(列名)
    values(值1) ,(值2)
  2. 删除
    Delete from(可省略) 表名 where<条件表达式> --删除数据会导致编号中断
    truncate table 表名 –清空表中数据,将表重置
  3. 修改
    update 数据表 set 字段名1=表达式1
    where<条件表达式>
  4. 查询
    Select top n * form 表名

加班的看法
看了哪些书

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • 转载自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay阅读 6,060评论 1 5
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,019评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,034评论 1 32
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,390评论 1 14
  • 秋雨淅淅沥沥 要连下几天 即便打湿了裸露在室外的一切 降低了温度 我的心房依旧温暖 如温室大棚 可以栽种苗苗 灌溉...
    ErinTang阅读 232评论 0 1