面经202011月10号左右

1. 在 C++中,struct 和 class 在定义或操作特性上有什么不同

struct默认属性是public

class默认属性是privalite私有的

2者都可以被子类继承

2.请说明i++与++i的区别?

++i比i++快

i++会创建临时变量



就单例模式编写demo代码;或者说出单例模式主要特征,需要注意什么?

说明一下线程的基本概念,多线程同步和互斥有何异同以及在什么情况下分别使用他们?举例说明



析构函数不是虚函数,子类有内存泄漏

A is c

A::Print

B is c

A is d

请阐述面向对象 与 面向过程 的区别? 并举一个例子作说明。

面向对象,要创建对象

面向过程关注实现的过程

15. [开放封闭] 基于面向对象的抽象基本原则,请描述自己的理解? 并提出五大设计原则进行描述。(任选一个即可)

抽象:把任何事物都抽象成一个类




使用 map<string,pair(n1,n2)>
n1为总数,n2为单个集合是否出现过



请写出执行顺序
1. select XXX
2. from XXX
3. where XXX
4. group by XXX
5. having XXX
6. order by XXX

写命令:linux下查看file.txt中含有关键字"HAPPY"的行,并统计行数

原子操作举例,

无锁队列?

怎么定位内存泄漏问题?


滴滴 tengxun 东方国信数据库,音乐小公司
数据库语句
按照年龄大小排序
group by
c和c++的区别 ,
ip和物理地址都是 不会改变的吗? mac地址不会,ip会,ip好比人的名字,mac好比身份证号码

ping的过程是怎样的 先发arp请求,再发icpm
你在工作中为团队做的哪些提高效率的贡献?举例说明

复杂链表的复制
输出字符串XXX的所有排列

#面经##校招##C++工程师#
全部评论
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。 线程同步一般是当多个线程相互协作,存在相互依赖的关系; 线程互斥是包括临界资源等的访问,相互线程之间是互斥访问。
1 回复 分享
发布于 2020-11-16 10:22
面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!
1 回复 分享
发布于 2020-11-16 13:56
抽象 o 忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口).抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一个数据抽象,而是过程抽象. o 数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽毛等(类的属性) o 过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比如鸟会飞,会叫(类的方法) · 封装 o 封装就是把过程和数据包围起来,对数据的访问只能通过特定的界面.如私有变量,用set,get方法获取 · 继承 o 一种联结类的层次模型,并且允许和鼓励类的重用,提供一种明确表达共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类).派生类可以从它的父类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要.因此可以说,继承为了重用父类代码,同时为实现多态性作准备. · 多态 o 多态是指允许不同类的对象对同一消息做出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活/抽象/行为共享/代码共享的优势,很好的解决了应用程序函数同名问题.总的来说,方法的重写,重载与动态链接构成多态性.java引入多态的概念原因之一就是弥补类的单继承带来的功能不足. 单一职责原则(Single Responsibility Principle,SRP),就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受意想不到的破坏。 开放-封闭原则(The Open-Closed Principle,OCP)是说软件实体(类、模块、函数等)应该可以扩展,但是不可修改。这个原则其实是有两个特征,一个是说更改时封闭的(Closed for modification)。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。 依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 通俗的说就是我们在客户端只依赖与强类型的类,比如说接口或者抽象类,不应该把具体实现接口或者抽象类的具体类放到客户端。 里氏代换原则(Liskov Substitution Principle LSP)是说子类型必须能够替换它们的父类型。简单的理解为一个软件实体如果使用的是一个父类,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,软件里面,把父类都替换成它的子类,程序的行为没有变化。 在进行设计的时候,我们尽量从抽象类继承,而不是从具体类继承。如果从继承等级树来看,所有叶子节点应当是具体类,而所有的树枝节点应当是抽象类或者接口。当然这个只是一个一般性的指导原则,使用的时候还要具体情况具体分析。 迪米特法则(Law of Demeter)又叫最少知道原则(Least Knowledge Principle,LKP)。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。迪米特法则的初衷在于降低类之间的耦合。
1 回复 分享
发布于 2020-11-18 16:43
from>where>group by>having>select>order by from:需要从哪个数据表检索数据 where:过滤表中数据的条件 group by:如何将上面过滤出的数据分组 having:对上面已经分组的数据进行过滤的条件 select:查看结果集中的哪个列,或列的计算结果 order by:按照什么样的顺序来查看返回的数据
1 回复 分享
发布于 2020-11-18 17:23
cat XXX.txt | grep -nf HAPPY
点赞 回复 分享
发布于 2020-11-23 23:30
如何定位内存泄露? (1)在windows平台下通过CRT中的库函数进行检测; (2)在可能泄漏的调用前后生成块的快照,比较前后的状态,定位泄漏的位置 (3)Linux下通过工具valgrind检测
点赞 回复 分享
发布于 2020-11-23 23:31
点赞 回复 分享
发布于 2020-11-24 09:05

相关推荐

11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
牛客533433175号:更可气的是我做完这些给我拒了
点赞 评论 收藏
分享
评论
5
11
分享
牛客网
牛客企业服务