- 博客(129)
- 资源 (3)
- 收藏
- 关注
原创 2015阿里系统工程师面试经验分享(广州站)
这篇文章的源处是:http://user.qzone.qq.com/794884160/blog/1411125641。这个是在签意向书认识的同事,他把面试经验写在QQ空间,经过他的同意后,我把这篇文章转载到这里,供大家分享。以下是正文:前言:首先我想说的是,阿里面试不是碰运气,除了技术,你还要能变通,而只有了扎实的技术作根基你才能轻松变通!!!!能进入BAT(百度、阿
2017-10-19 22:50:08
442
原创 2015阿里校园招聘测试开发面试经验(广州站)
第一次写面试经验,不知道从哪里开始写。就写简单点和重点吧。 预约的时间是下午3:15,差不多中午的时候就到了酒店,和同学一起在附近的一个地方吃了中午饭,然后就去酒店等了。同学们是预约的1:15的,所以,等了不是很久,他们都去了,只剩下我一个在那里了啊,带了点资料,在那里看看,差不多两点的时候,同学都差不多出来了,得知他们的面试结果是未通过。自己快要面试了,感觉还是有点紧张的,想着面试怎么
2017-10-19 22:48:13
344
原创 第四章 存储器管理(4)——虚拟存储器
4.5、虚拟存储器的基本概念前面所介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行,于是,出现了下面这样两种情况:(1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行。(2) 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待
2014-08-11 00:00:59
1691
原创 第四章 存储器管理(3)——基本分段存储管理方式
4.4、基本分段存储管理方式如果说推动存储管理方式从固定分区到动态分区分配,进而又发展到分页存储管理方式的主要动力,是提高内存利用率,那么,引入分段存储管理方式的目的,则主要是为了满足用户(程序员)在编程和使用上多方面的要求,其中有些要求是其它几种存储管理方式所难以满足的。(每一段的大小可以是不一样的,即其段长可以不一致) 4.4.1、分段在分段存储管理方式中,作业的地址空间被划分
2014-07-21 00:52:37
1342
原创 第四章 存储器管理(2)——基本分页存储管理方式
4.2、连续分配方式和非连续分配管理方式 连续分配方式,是指为一个用户程序分配一个连续的内存空间。可把连续分配方式进一步分为单一连续分配、固定分区分配、动态分区分配以及动态重定位分区分配四种方式。非连续分配是指允许将一个程序分散地装入到很多不相邻的小分区中。根据小分区的大小固定和不固定又分为分页存储管理方式和分段存储管理方式。分页存储管理方式中又根据运行作业时是否需要把作业
2014-07-17 00:20:02
1268
原创 第四章 存储器管理(1)——基本知识
存储器管理的主要对象是内存,由于对外存的管理与对内存的管理相类似,只是它们的用途不同,即外存主要用来存放文件,所以我们把对外存的管理放在文件管理。(写到这里)4.1、程序的装入和链接在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:首先是要编译,由编译程序(Comp
2014-07-16 23:55:57
410
原创 第三章 处理机调度与死锁(2)——几种实时调度算法
3.3、实时调度3.3.1、常用的几种实时调度算法1、最早截止时间优先即EDF(Earliest Deadline First)算法该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,
2014-07-07 22:40:48
612
原创 第三章 处理机调度与死锁(1)——高级、中级和低级调度
分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统性能(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏。3.1、处理机调度的基本概念3.1.1、高级、中级和低级调度(这三个调度其实都是对处理机进行分配,也就是处理机调度)一个批处理型作业,从进入系统并驻留在外存的后备队列上开始,直至作业运行完成,可能需要经历三级调度:1
2014-07-07 22:36:29
3105
原创 第二章 进程管理(5)——线程
2.7、线程1、线程的基本概念如果说,在操作系统中引入进程的目的,是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。为了说明这一点,我们首先来回顾进程的两个基本属性:①进程是一个可拥有资源的独立单位;②进程同时又是一个可独立调度和分派的基本单位。正是由于进程有这两个基本属性,才使
2014-07-06 19:31:10
546
原创 第二章 进程管理(4)——进程通信
2.5、管程机制(一种新的进程同步工具) 利用共享数据结构抽象地表示系统中的共享资源(把共享的资源抽象的用共享数据结构来表示),而把对该共享数据结构实施的操作定义为一组过程,如资源的请求和释放过程request 和release。进程对共享资源的申请、释放和其它操作,都是通过这组过程对共享数据结构的操作来实现的,这组过程还可以根据资源的情况,或接受或阻塞进程的访问,确保每次仅有一个进
2014-07-06 16:38:24
402
原创 第二章 进程管理(3)——进程同步
2.4、进程同步进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。1、两种形式的制约关系在多道程序环境下,当程序并发执行时,由于资源共享和进程合作,使同处于一个系统中的诸进程之间可能存在着以下两种形式的制约关系:(1) 间接相互制约关系同处于一个系统中的进程,通常都共享着某种系统资源,如共享
2014-07-06 16:31:54
1235
原创 第二章 进程管理(2)——进程控制块
2.2、进程控制块(Process Control Block)1、进程控制块的作用进程控制块PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个
2014-07-06 16:03:02
1902
原创 第二章 进程管理(1)——进程的特征与状态
2.1、进程的特征与状态1、进程的特征与定义(1)进程的特征☆ 结构特征 通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置——进程控制块,即PCB(Process Control Block);而由程序段、相关的数据段和PCB三部分便构成了进程实体。值得指出的是,在许多情况下所说的进程,实际上是指进程实体,例如,所谓创建进程,实质上是创建进程实体
2014-07-06 15:51:23
649
原创 第一章 操作系统引论(2)——操作系统的基本特性
1.6、操作系统的基本特性前面所介绍的三种基本操作系统都各自有着自己的特征,如批处理系统具有能对多个作业进行成批处理,以获得高的系统吞吐量的特征,分时系统具有允许用户和计算机进行人机交互特征,实时系统具有实时特征,但它们也都具有并发、共享、虚拟和异步这四个基本特征。其中,并发特征是操作系统最重要的特征,其它三个特征都是以并发特征为前提的。(1)、并发所谓程序并发,是指在计算机系统中同时
2014-07-01 23:32:22
544
原创 第一章 操作系统引论(1)——操作系统的作用
计算机系统由硬件和软件两部分构成。软件又分成系统软件和应用软件两类。操作系统(Operating System,OS)是一个最基本也是最重要的系统软件。“操作系统”目前尚无统一的定义。下面给出操作系统的非形式化的定义:操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。1.1、操作系统的作用(1)OS作为用户与计算机硬件系统之间的接
2014-07-01 22:18:00
354
原创 第九章 目标代码生成(1)
目标代码生成是编译程序的最后一个工作阶段。其任务是把先行阶段所产生的中间代码转换为相应的目标代码。一般而言,构造一个高效的代码生成程序并不容易,因为代码生成总是与某一具体的目标计算机密切相关,很难找到一种对各编译程序都普遍适用的好的生成算法。然而我们仍应研究这一课题,因为,一个精巧的代码生成程序所产生的目标代码,在执行效率上,要比那些拙劣的代码生成程序所产生的目标代码要高得多。对于一个好的代码
2014-06-18 22:43:21
2167
原创 第八章 代码优化(1)
为了使编译程序能产生高质量的目标代码,常常需要对源程序的中间代码进行等价变换; 或者制定某种策略,使得所产生的目标代码能够较合理地利用目标计算机的资源。通常,我们把编译程序所完成的这一部分工作称为代码优化。不过,需要注意的是,这里所说的“优化” ,并非通常含义下的“最佳化” ,而仅仅是指某种相对的合理性。一个编译程序可以进行范围很广的优化工作:有在中间代码生成过程中的优化,有在小范围内对中间代
2014-06-18 22:24:06
482
原创 第七章 运行时的存储组织和分配(3)——分配策略
2、运行时的分配策略图7 - 1 所示三个数据区的组织,各自使用了不同的存储分配策略。这些策略是:( 1 )、静态分配;( 2 )、栈式分配,或称栈式动态分配;( 3 )、堆式分配,或称堆式动态分配。下面将分别加以介绍。2.1、静态分配静态存储管理是一种最简单的存储管理。当在编译阶段能够确定源程序中各个数据实体的存储空间大小时,就可以采用静态存储管理。一般而言,适于静态
2014-06-16 23:06:35
879
原创 第七章 运行时的存储组织和分配(2)——存储组织
1、存储组织1.1、运行时内存的划分在运行时,系统将为目标程序分配一块存储空间,这个存储空间按用途可以划分为下面几个部分:( 1 )、目标程序区,用来存放所生成的目标程序;( 2 )、静态数据区,用来存放编译程序本身就可以确定所占用存储空间大小的数据;( 3 )、运行栈区,在运行时才能分配存储空间的数据就分配在运行栈;( 4 )、供用户动态申请存储空间的堆区。这几个部分
2014-06-16 22:57:15
727
原创 第七章 运行时的存储组织和分配(1)
编译程序在其工作过程中,必须为源程序中所出现的一些量(常量、变量及某些数组等等)分配运行时的存储空间。存储分配方案的选择是否得当,将关系到计算机资源的合理使用,从而也将对编译系统的解题能力产生一定的影响。存储管理是指目标程序在运行时对内存的使用和再使用的安排。存储管理的策略要尽可能满足对内存使用的合理性和经济性,以及对程序中各个数据和实体访问的方便性。在实施存储管理时,应根据高级语言各自不同的
2014-06-16 22:44:58
502
原创 第六章 符号表(1)
在编译程序工作的过程中,需要不断收集、记录和使用源程序中一些语法符号(简称为符号)的类型和特征等相关信息。为方便起见,一般的做法是让编译程序在其工作过程中,建立并保持一批表格,如常数表、变量名表、数组名表、过程或子程序名表及标号表等等,我们将它们统称为符号表或名字表。符号表的每一登记项,将填入名字标识符以及与该名字相关联的一些信息。这些信息,将全面地反映各个符号的属性及它们在编译过程中的特征,诸如
2014-06-16 22:28:11
693
原创 第五章 语法制导翻译及中间代码生成(1)
由于编译程序工作的最终目标是将源程序翻译成可供计算机直接执行的目标程序,所以从整个编译过程来看,词法分析与语法分析仅仅是编译程序工作的一小部分。在早期的一些编译程序中,是在语法分析的基础上根据源程序中各语法成分的语义,直接产生机器语言或汇编语言形式的目标代码。虽然这种编译方式所需的时间较少,但具有很大的局限性,如不利于优化,编译程序难以移植,代码质量不高,等等。现在的编译系统,一般都是将经过语法分
2014-06-16 22:16:44
2345
原创 第四章 语法分析和语法分析程序(1)
一个字符串形式的源程序经词法分析之后,即被转换为一串单词符号,且其中的每一单词都按它们的内部形式来编码。语法分析程序以单词串形式的源程序作为输入或分析的对象。它的基本任务是:根据语言的语法规则(即根据描述该语言的前后文无关文法),分析源程序的语法结构,即分析如何由这些单词组成各种语法范畴(如下标变量、各种表达式、各种语句、程序段或分程序,乃至整个源程序等等),并在分析过程中,对源程序进行语法检
2014-06-16 22:05:37
1329
原创 第三章 词法分析及词法分析程序(1)
编译程序的整个工作过程,是从接收字符串形式的源程序文件作为输入,并对此输入串进行词法分析开始的。词法分析的任务就在于依次扫视输入串中的各个字符,并从其中识别出一系列具有独立意义的基本语法单位—单词(token,也称为记号)。对程序语言来说,关键字(如i f,for,while,begin,end等)、标识符、各种常数、各种运算符(如+、* 、>、> = 、> >、+ = 、A等)及
2014-06-16 21:59:09
913
原创 第一章 编译原理绪论(4)——编译程序的组织
图1所示的编译程序的逻辑结构,是指它们之间的逻辑关系,而不一定是执行时间上的先后顺序。事实上,可按不同的执行流程来组织上述各部分的工作,这在很大程度上依赖于编译过程中对源程序扫描的遍数,以及如何划分各遍扫描所进行的工作。此处所说的“遍”,是指对源程序或其内部表示从头到尾扫视一次,并进行有关的加工处理工作。从对源程序的词法分析开始到中间代码生成,编译程序所完成的处理工作只依赖于源语言,而与运行目
2014-05-07 21:00:13
453
原创 第一章 编译原理绪论(2)——编译程序的八个部分
编译程序的主要功能是把用高级语言编写的源程序翻译为等价的目标程序。就一个典型的编译程序而论,一般都含有下面八个部分:( 1 )、词法分析程序(也称为扫描器)( 2 )、语法分析程序(有时简称为分析器)( 3 )、语义分析程序( 4 )、中间代码生成程序( 5 )、代码优化程序( 6 )、目标代码生成程序( 7 )、错误检查和处理程序( 8 )、各种信息表格的管理程序
2014-05-07 20:45:01
2733
原创 第一章 编译原理绪论(1)——编译原理基本概念
计算机硬件只懂自己的指令系统,即只能直接执行相应机器语言格式的代码程序,而不能直接执行用高级语言或汇编语言编写的程序。因此,要在计算机上实现除机器语言之外的任一程序设计语言,就首先应使此种语言为计算机所“理解”。解决这一问题的方法有两种:一种是对程序进行翻译;另一种是对程序进行解释。(1)、翻译程序所谓翻译,是指在计算机中放置一个能由计算机直接执行的翻译程序,它以某一种程序设计语言(源语言
2014-05-07 20:41:11
571
转载 联合体的内存大小
解惑:sizeof(联合)这个值是怎么计算的[不要只做技术]在论坛上问如下代码结果为什么是24? union DATE { char a; int i[5]; double b; }; DATE max; cout 这个问题很好回答,并且我把这个问题归结于基本概念题(就是入门书必须介绍的)。我想一般来说,做过内存管
2013-09-05 00:19:50
745
转载 c++空类实例大小不是0原因
《深度探索c++对象模型》中是这样说的:那是被编译器插进去的一个char ,使得这个class的不同实体(object)在内存中配置独一无二的地址。也就是说这个char是用来标识类的不同对象的 初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层
2013-08-05 23:11:49
350
原创 位域
有些信息在存储时,并不需要占用一个完整的字节(一个字节是8位), 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象
2013-08-01 20:09:09
300
原创 返回值优化
通过传值方式返回要创建新对象时,应注意使用的形式,例如在operator+:return Integer(left.l / right.l) ; 咋看起来这像是一个“对一个构造函数的调用”,其实并非如此。这是临时对象语法,它是在说:“创建一个临时Integer对象并返回它”。据此我们可能认为如果创建一个有名字的局部对象并返回它结果是一样的。其实不然。如果如许编写:Integer
2013-07-31 10:26:58
383
转载 C/C++中的联合 union
联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合? “联合”是一种特殊的类,也是一种构造类型的数据结构。 在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的
2013-07-27 22:07:09
667
原创 const放在函数头和放在函数参数表和函数体之间的区别
1、const放在函数头。例如:const int Fun1(); const放在函数头表示该函数的返回值是不可修改的。2、const放在函数参数表和函数体之间。例如:const int Fun1();
2013-07-27 12:18:40
561
原创 C/C++中的显示调用和隐式调用
C/C++中的显示调用和隐式调用:(1)、显示调用 显示调用是指在程序中能找到相应的调用代码,或者说是手动调用的(2)、隐式调用 隐式调用是指程序中找不到相应的调用代码,或者说是编译器自动调用的 类的构造函数与析构函数一般就是隐式调用的。
2013-07-26 15:36:20
5438
原创 系统是如何调用虚函数
系统是如何调用虚函数的? 每个对象创建虚函数时,对象都记得记录这个虚函数,因此编译器建立一个叫做T表的虚函数表。每个对象都有一个指向该表的指针,叫做虚表指针。该指针用来指向虚函数表。相反虚函数表也有一个指针指向该对象,当创建派生类对象的基类部分时,该对象的指针就自定初始化为指向虚函数表的正确部分。当调用派生类对象的构造函数时,这个对象就会添加到虚函数表中去,并且将指针指向该对象的重
2013-07-13 11:19:19
352
原创 私有派生
基类的私有派生指使用关键字private。例如:#include using namespace std ;class Father{public: void room() { cout << "父亲的大房子我可以享受!\n" ;}}; class Son : private Father // 从Father中私有派生的{};int main(){ Son
2013-07-09 21:13:40
483
原创 基类对象和派生类对象之间的赋值关系
基类对象和派生类对象之间的赋值关系具体是指:基类的对象可不可以赋值给子类对象或者子类对象可不可以赋值给基类对象。 一般来说,只有派生类的对象可以赋值给基类的对象,反之,则不可以。例如:Father a ; // 基类对象Son b ; // 派生类对象a = b ; // 可以b = a ; // 不可以 为什么
2013-07-09 20:38:17
2393
数电课程设计定时抢答器.doc
2010-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人