精选文章 诺瓦笔试2020.8.4

诺瓦笔试2020.8.4

作者:weixin_43969141 时间: 2020-08-04 08:28:51
weixin_43969141 2020-08-04 08:28:51

1、Socket通信步骤

  1. 建立一个服务器SeverSocket,并同时定义好SeverSocket的监听端口
  2. SeverSocket调用accept()方法,使之处于阻塞
  3. 创建一个客户机Socket,并设置好服务器的IP和端口
  4. 客户机发出连接请求,建立连接
  5. 分别获取服务器和客户端SeverSocket和Socket的InputStream和OutStream
  6. 利用Socket和SeverSocket进行数据通信

2、第一次出现为两次的字符

void FindFristRepeatTwiceChar(char *str)
{
	if (NULL != str)
	{
		int CountChar[256] = { 0 };
		for (int i = 0; i

3、描述数据结构中栈和队列的区别。并说出3个操作

不同点:

1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。

2.队列先进先出,栈先进后出。

3.顺序栈能够实现多栈空间共享,而顺序队列不能。

4.遍历数据速度不同。

栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来。

队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历无需开辟临时空间,速度要快的多。

相同点:

1.都是线性结构

2.插入操作都是限定在表尾进行。

3.都可以通过顺序结构和链式结构实现。

4.插入与删除的时间复杂度与空间复杂度上两者均相同。

操作:push(), pop(), empty()

4、cpu在管态和目态下工作有何不同

管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。
目态又叫常态或用户态。机器处于目态时,程序只能执行非特权指令。用户程序只能在目态下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指令执行被禁止,这样可以防止用户程序有意或无意的破坏系统。

不同:当中央处理器处于管态时,可以执行包括特权指令在内的一切机器指令,而在目态下工作不允许执行特权指令。

5、定义构造函数

  1. 使用默认构造函数(类不菱形定义构造函数),能够创建一个类对象,但不能初始化类的各个成员 
  2. 定义带有参数的构造函数,用来初始化数据成员
  3. 定义有默认值的构造函数,用来个数据成员提供默认值
  4. 使用构造函数初始化列表,这个构造函数初始化成员的方式更加紧凑

    ps:创建一个类,c++会给每个类政添加至少三个函数:
      构造函数:创建对象时为对象成员属性赋值   编译器自动调用(用户定义的话就只提供默认拷贝构造)
      析构函数:主要作用在于对象销毁前系统自动调用  执行清理工作
      拷贝构造函数:已经创建完毕的对象初始化一个新对象、值传递的方式给函数参数传值(用户定义的话什么都不提供)

6、解释封装、继承、多态(面向对象三大特征)

       封装是面向对象封装(Encapsulation)是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

      继承:子类扩展了父类,获得父类的成员变量和方法,主要用于实现代码重用,节省开发时间。

      ps:封装和继承几乎都是为多态而服务

      多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

7、结构体数组(修改代码)

https://www.cnblogs.com/kkxxzxy/articles/12905932.html

8、dos的缩写

    dos(diskette operation system)磁盘操作系统 

9、描述ARP协议的作用及其工作原理,什么是ARP欺骗攻击?

ARP:地址解析协议。

作用:建立局域网内主机间的MAC地址与IP地址的映射。

工作原理:假设主机A向主机B第一次发送信息,主机A只知道主机B的IP地址但却不知道MAC地址(局域网地址)。

                  主机A先以广播形式发送携带“主机A的MAC地址,主机A的IP地址,请求主机B的IP地址”信息的ARP请求

                  主机B先记下主机A的MAC和IP地址,写入ARP缓存。(  在同一局域网上的所有主机都可以收到这个请求,但只有主机B的IP地址和请求匹配,所以主机B收下这个请求)

                  最后主机B以单播的形式发送携带“主机B的MAC地址,主机B的IP地址”信息的ARP响应,主机A收到后记下主机B的MAC和IP地址,写入ARP缓存。

ARP欺骗攻击:就是在ARP请求阶段,解析到这份ARP请求,然后将自己伪装成主机B,填写一个不存在的MAC地址回复给A,A再将这个假的MAC地址与主机B的IP地址成对写进ARP表中。所以在A的ARP表中B这个条目过期前,A会一直往这个假的MAC地址发送数据,一直不会成功传输。

10、有如下图所示(左)的一棵二叉树, 请设计一种遍历方式,使得按照如下方式(右)输出各个元素:(从下到上, 从右到左输出, 要求每层之间换行, 同行元素之间用tab分割,写出完整代码)

11、深拷贝和浅拷贝的区别

     深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。

ps:

浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,

深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,

使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。

浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。

深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。

12、非虚成员函数和虚成员函数哪个被调用时更快?

非虚成员函数。、

虚函数的地址保存爱虚函数列表里,调用虚函数时根据虚函数在Vtable中的偏移量得到真实函数地址再调用。其实虚函数和废墟函数的地址分别是奇数和偶数,这也是函数调用时虚函数和废墟函数的判别方法。没必要利用多态行为时用虚函数增加内存开销,降低效率。

虚函数:虚函数的作用主要是实现了多态的机制。基类定义虚函数,子类可以重写该函数。

13、windows内存管理的机制以及优缺点

windows 内存管理方式主要分为:页式管理,段式管理,段页式管理

页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应的页表;并用相应的硬件地址变换机构来解决离散地址变换问题。页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理。其优点是没有外碎片,每个内碎片不超过页的大小。缺点是,程序全部装入内存,要求有相应的硬件支持。例如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本,增加了系统开销。

段式管理的基本思想是把程序按照内容或过程函数关系分段,每段都有自己的名字。一个用户作业或进程所包括的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存物理地址。其优点是可以分别编写和编译,可以针对不同类型的段采用不同的保护,可以按段为单位来进行共享,包括通过动态链接进行代码共享。缺点是会产生碎片

段页式管理:为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理等。另外由于一个段又被划分成了若干个页。每个段必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。段页式管理的段式管理与页式管理方案结合而成的所以具有他们两者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外需要的硬件以及占用的内存也有所增加。使得速度降下来

14、给定一个二叉树,且每个节点存储一个值。设计一个算法,实现:对于一个给定的数值, 打印出所有的路径。这条路径不必要开始于或结束语根节点或叶节点。

15、java中接口和抽象类的区别

含有 abstract 修饰符 class 即为抽象类。
接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final。
抽象类中可以有普通成员变量接口中没有普通成员变量
抽象类中可以包含非抽象普通方法接口中的所有方法必须都是抽象的,不能有非抽象的方法
抽象类中的抽象方法的访问权限可以是 public、protected 和默认类型,虽然 eclipse 不报错,但也不能用,默认类型子类不能继承);接口中的抽象方法只能是 public 类型,并且默认即为 public abstract 类型。
一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。

16、为什么类的构造函数一般设置为保护类型

C++类的构造函数一般不应该是私有函数,因为私有函数不能被其他类或者全局函数所使用。而创建C++实例需要调用构造函数。所以如果构造函数是私有函数的话,除了类自己的方法之外,其他类不能构造这个类的实例。

但是,在一些特殊场合,比如不希望其他类能够实例华裔各类,这种情况下会把构造函数定义为私有的或者保护的。就是一个类只有一个实例,为了避免其他类创建多个实例,把构造函数定义为私有的。

17、c++类对象初始化方式总结

第一种情况: XX aa = a;
第二种情况: XX aa(a);
第三种情况: extern fun(XX aa); fun(a)函数调用
第四种情况: XX fun(){...}; XX a = fun();函数返回值的时候

 

广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点

深搜,顾名思义,是深入其中、直取结果的一种搜索方法。


  如果深搜是一个人,那么他的性格一定倔得像头牛!他从一点出发去旅游,只朝着一个方向走,除非路断了,他绝不改变方向!除非四个方向全都不通或遇到终点,他绝不后退一步!因此,他的姐姐广搜总是嘲笑他,说他是个一根筋、不撞南墙不回头的家伙。

      深搜很讨厌他姐姐的嘲笑,但又不想跟自己的亲姐姐闹矛盾,于是他决定给姐姐讲述自己旅途中的经历,来改善姐姐对他的看法。他成功了,而且只讲了一次。从那以后他姐姐不仅再没有嘲笑过他,而且连看他的眼神都充满了赞赏。他以为是自己路上的各种英勇征服了姐姐,但他不知道,其实另有原因……

      深搜是这样跟姐姐讲的:关于旅行呢,我并不把目的地的风光放在第一位,而是更注重于沿路的风景,所以我不会去追求最短路,而是把所有能通向终点的路都走一遍。可是我并不知道往哪走能到达目的地,于是我只能每到一个地方,就向当地的人请教各个方向的道路情况。为了避免重复向别人问同一个方向,我就给自己规定:先问北,如果有路,那就往北走,到达下一个地方的时候就在执行此规定,如果往北不通,我就再问西,其次是南、东,要是这四个方向都不通或者抵达了终点,那我回到上一个地方,继续探索其他没去过的方向。我还要求自己要记住那些帮过他的人,但是那些给我帮倒忙的、让我白费力气的人,要忘记他们。有了这些规定之后,我就可以大胆的往前走了,既不用担心到不了不目的地,也不用担心重复走以前的路。哈哈哈……

深搜优缺点
优点
1、能找出所有解决方案
2、优先搜索一棵子树,然后是另一棵,所以和广搜对比,有着内存需要相对较少的优点
缺点
1、要多次遍历,搜索所有可能路径,标识做了之后还要取消。
2、在深度很大的情况下效率不高

 

  广搜,顾名思义,是多管齐下、广撒网的一种搜索方法


  如果广搜是一个人,那么她一定很贪心,而且喜新厌旧!她从一点出发去旅游,先把与起点相邻的地方全部游览一遍,然后再把与她刚游览过的景点相邻的景点全都游览一边……一直这样,直至所有的景点都游览一遍。

       广搜属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。类似树的按层遍历,其过程为:首先访问初始点Vi,并将其标记为已访问过,接着访问Vi的所有未被访问过可到达的邻接点Vi1、Vi2…Vit,并均标记为已访问过,然后再按照Vi1、Vi2…Vit 的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依此类推,直到图中所有和初始点Vi有路径相通的顶点都被访问过为止。

广搜优缺点
优点
1、对于解决最短或最少问题特别有效,而且寻找深度小
2、每个结点只访问一遍,结点总是以最短路径被访问,所以第二次路径确定不会比第一次短
缺点
1、内存耗费量大(需要开大量的数组单元用来存储状态)

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:两个大数相加

下一篇:Thread.join()方法源码分析

您可能感兴趣

  • 美通企业日报 | 护照含金量迎来亚洲时代;沃尔沃集团联网交通设备交付一百万台...

    今日要闻 在护照含金量方面,亚洲时代悄然到来。在全球经济发生变革和权力中心迁移之际,亚洲的优势看上去坚不可摧。进入2019年最后一个季度,日本和新加坡在Henley Passport Index(亨氏护照指数)中稳居榜首,持这两个国家的护照可以前往的免签/落地签国家达到190个(全世界现有227个国家和地区)。 沃尔沃集团联网交通设备累计交付量突破一百万台大关。沃尔沃集团已成功交付客户超过一...

  • 敏捷宣言:主义?价值观?口号?再谈敏捷生态系统

    前几天写培训PPT,突然发现不知道把敏捷宣言放在那里好。 因为看上去,敏捷宣言中既有体现价值观的内容,也有直接的操作层面上的内容。大家请看(前后删除了一些): 个体与互动 胜于 过程与工具 可工作软件 胜于 复杂文档 用户协作 胜于 合同谈判 响应变化 胜于 遵循计划 如果感觉看不太明显,那么我们来两个对照版本,就会感觉更加清晰。 “价值观”版本的敏捷宣言 客户价值 胜于 软件和文档#1 受...

  • C++面试题刷题9-26

    久没写面经了,好好整理一波回馈牛友,希望对大家有帮助,后续还有面经会再补充到这篇里 只写了和以前面经不重复的,像进程间通信方式这类每次必问的就不写了。 以下面经按时间顺序排序 诺瓦科技两面: 一面 手写string,以前没写过,各种细节错误,但都改对了。 封装一个字符串类,这是C++的常见题目 C语言和C++区别 面向对象讲讲,队列的场景,感觉都很假大空还老说我答不到点上,但也不知道那个点到...

  • Eva 剧情解析

    Eva 剧情解析 来源 https://zhuanlan.zhihu.com/p/20864898 【0.写在前面的话】 相信和我年龄差不多的小伙伴们对《新世纪福音战士》( 《Neon Genesis Evangelion》,以下简称《EVA》 )一定不陌生,小时候爱看动画片的我们每天放学之后气势汹汹地守在电视机屏幕前等着《EVA》片头曲的出现,带着“一脸懵逼”的表情看着机器人打怪兽,相信当...

  • 大咖|英特尔中国研究院院长宋继强:我们是如何与李宇春打造全球第一支三维人脸特效的音乐视频的...

    上个月底,李宇春一支据说筹备时间长达6个月的mv正式发布。这首基于英特尔人工智能技术的MV,将电子曲风的浪漫情歌与尖端科技结合,一上线即火遍全网。在11月15日刚刚结束的2017英特尔人工智能大会上,英特尔中国研究院院长宋继强揭秘了这支有三维人脸特效的音乐视频是如何实现的。 此外,英特尔全球副总裁兼中国区总裁杨旭本次大会上宣告了英特尔在人工智能领域的三大战略方向:创新技术、广泛合作、推动应用...

  • 简单的智慧算法存在吗?一篇机器翻译的文章试图求解

    本文讲的是简单的智慧算法存在吗?一篇机器翻译的文章试图求解,达到人的水平的,简单的人工智能/智慧算法是否有可能存在?这个是一个带有终极性的问题。尤瓦尔·赫拉利的畅销书《未来简史》(Homo Deus)中花了大量笔墨讨论智人的智能的来源,以及『意识』是否真实存在等问题,如果说这些是关于理解智慧的问题,那么『简单的智慧算法是否存在』就是一个关于能否创造智慧的问题。 传统上,很多人都会认为智慧是非...

  • 盘点海外动力电池巨头 细数日韩锂电设备企业

    力电池三大巨头:帮助中国完成产业升级,历史优势正逐渐被国内企业超越 目前全球锂电池的主要生产国为中国、日本及韩国。凭借产业优势和技术积累,松下、LG化学、三星SDI目前仍是锂电池领域三大巨头。根据BloombergNewEnergyFinace统计,2017年一季度全球动力电池出货量5273MWh,其中三巨头总计占比达62%。松下采用高镍三元路线,封装以圆柱形为主,其圆柱形电池能量密度世界领...

  • 数学是什么

    2019独角兽企业重金招聘Python工程师标准>>> 数学与编程 文章来源 http://www.cnblogs.com/edward-bian 在这里写数学博客也许有些另类,大家讨论的都是最新最实用的技术,数学这门古老学科在这里显得违和感很强。对绝大部分程序员而言,也许一辈子都用不到几个数学公式。少许人在工作中会偶尔碰到一点数学概念,隐约可以感觉到这只无形的手的神奇力量。   严格说,我...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。