数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据结构,例如跳表之于redis、B+树之于mysql、倒排索引之于ES,熟悉了底层数据结构,对框架有了更深层次的理解,在后续程序设计过程中就更能得心应手。掌握常见数据结构和算法的重要性显而易见,本文主要讲解了几种常见的数据结构及基础的排序和查找算法,最后对高频算法笔试面试题做了总结。本文会持续补充,希望对大家日常学习或找工作有所帮忙。
有3点比较重要 (王争)
《大话数据结构 程杰》入门
《数据结构与算法分析:Java语言描述》(大学课本 伪代码)
《剑指offer》 使用的C++语言来实现的,现在我不怎么使用了
《程序员代码面试指南:IT名企算法与数据结构题目最优解》左程云,现在正在看的书
《编程珠玑》(对大数据量处理的算法)
《编程之美》(超级难)
《算法导论》(很厚很无聊)
《算法第四版》(推荐 本书没有动态规划)
《数据结构与算法 极客时间》 王争google
《算法之美》(闲暇阅读) 是短网址服务的域名)
7、编程实现一个LRU缓存淘汰算法 (使用散列表+链表组合实现缓存淘汰算法)LinkedHashMap(思路牛逼)(双向链表+散列表)(使用双向链表支持按照插入的顺序遍历数据,支持按照访问顺序遍历数据)
一个缓存(cache)系统主要包含下面这几个操作:往缓存中添加一个数据;从缓存中删除一个数据;在缓存中查找一个数据。
①使用双向链表存储数据,链表中每个节点存储数据(data)、前驱指针(prev)、后继指针(next)和hnext指针(解决散列冲突的链表指针)。
②散列表通过链表法解决散列冲突,所以每个节点都会在两条链中。一条链是双向链表,另一条链是散列表中的拉链。前驱和后继指针是为了将节点串在双向链表中,hnext指针是为了将节点串在散列表的拉链中。(牛逼)
java中有现成的工具可以使用
理解常用字符串匹配算法的原理、实现、设计意图和应用场景,搞清楚能解决什么问题。
思路:我们通过哈希算法对主串中的n-m+1个子串分别求哈希值,然后逐个与模式串的哈希值比较大小。如果某个子串的哈希值与模式串相等,那就说明对应的子串和模式串匹配了,效率取决于哈希算法的设计方法。
算法思想:编程中一定会出现的问题:变种非常多(反转/反转单词/子串/最长子串/最长子序列)
5、反转字符串,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题 输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]
7、字符串转换整数 请你来实现一个 atoi 函数,使其能将字符串转换成整数
该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数
例如:输入: " -42" 输出: -42 第一个非空白字符为 ‘-’, 它是一个负号
输入: “4193 with words” 输出: 4193 解释: 转换截止于数字 ‘3’ ,因为它的下一个字符不为数字
二叉树是n个有限元素的集合,由根元素以及左右子数组成。集合可以为空。
非递归先序遍历:需要使用一个栈来记录当前节点,以便在完成左子树遍历后能返回到右子树中进行遍历;
* 在遍历左子树之前,把当前节点保存在栈中,直至遍历完左子树,将该元素出栈,然后找到右子树进行遍历。
二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作
1、查找操作:我们先去根节点,如果它等于我们要查找的数据,就返回;如果比根节点小,就在左子树中递归查找;如果比根节点值大,就在右子树中递归查找。
2、插入操作 得先比较,从根节点开始
3、二叉查找树的删除操作(1、如果要删除的节点没有子节点,我们只需要直接将父节点中指向要删除节点的指针置为null;2、要删除的节点有一个子节点,我们只需要更新父节点,指向要删除节点的指针
3、要删除的节点有两个子节点,找到这个节点的右子树中的最小节点,替换到要删除的节点上)
二叉查找树的执行效率:若是根节点的左右子树季度不平衡,已经退化到了链表,查找的时间复杂度为O(n);平衡二叉查找树的时间复杂度O(lgn)
红黑树是于1972年发明的,当时称为对称二叉B树,1978年得到优化,正式命名为红黑树。它的主要特征是在每个节点上增加一个属性来表示节点的颜色,可以是红色,也可以是黑色。红黑树和 AVL 树类似,都是在进行插入和删除元素时,通过特定的旋转来保持自身平衡的, 从而获得较高的查找性能。与AVL树相比,红黑树并不追求所有递归子树的高度差不超过1, 而是保证从根节点到叶子节点的最长路径不超过最短路径的2 倍,所以它的最坏运行时间也是 O(logn)。红黑树通过重新着色和左右旋转,更加高效地完成了插入和删除操作后的自平衡调整。当然 , 红黑树在本质上还是二叉查找树,它额外引入了 5 个约束条件,如下
1、每个节点要么是红色,要么是黑色;
2、根节点必须是黑色;
3、红色节点不能连续(红色节点的孩子和父亲都不能是红色);
4、对于每个节点,从该点至叶子的任何路径,都含有相同个数的黑色节点;
5、确保节点的左右子树的高度差,不会超过二者中较低那个的一倍;
应用场景:搜索,插入删除次数多(为了解决普通二叉查找树在数据更新的过程中,复杂度退化的问题而产生的)
1、map和set都是用红黑树实现的
3、epoll在内核中的实现,用红黑树管理事件块
AVL树适合用于插入删除次数比较少,但查找多的情况
关于动态数据结构:链表/栈/队列/哈希表(链表适合遍历的场景,插入和删除操作方便;栈和队列可以算一种特殊的链表,分别使用先进后出和先进先出的场景;哈希表适合插入和删除比较少,查找比较多的场景;红黑树对数据要求有序,对数据增删改查都有一定要求的时候)
散列表/跳表/红黑树性能对比:
1、散列表:插入删除查找都是O(1),是最常用的,缺点是不能顺序遍历以及扩容缩容的性能损耗。适用于不需要顺序遍历、数据更新不那么频繁的;
2、跳表:插入删除查找都是O(lgn),能顺序遍历,缺点是空间复杂度O(n),适用于不那么在意内存空间的,其顺序遍历和区间查找非常方便;
3、红黑树:插入删除查找都是O(lgn),中序遍历即是顺序遍历,稳定。缺点是难以实现,去查找不方便。
排序操作: //n表示数据的个数,数组a中的数据从下标1到n的位置。
为什么快速排序要比堆排序性能好?
1、堆排序数据访问的方式没有快速排序友好(开拍是顺序访问;堆排序是跳着访问,对cpu缓存不友好)
2、同样的数据,在排序过程中,堆排序算法的数据交换次数要多于快速排序
应用:1、优先级队列;2、topK;3、流里面的中位数;
字符串匹配算法:单模式串匹配算法(BF算法、RK算法、BM算法、KMP算法),多模式串匹配算法(Trie树 最长前缀匹配)
AC自动机算法包含两个部分,第一部分是将多个模式串构建成AC自动机,第二部分是在AC自动机中匹配主串。第一部分又分为两个小的步骤,一个是将模式串构建成Trie树,另一个是在Trie树上构建失败指针
一个是数据的保存位置,
上述两种特性造成的现象为:
1、B+树查询时间复杂度固定是logn,B树查询复杂度最好是 O(1)。
2、B+树相邻接点的指针可以大大增加区间访问性,可使用在范围查询等,而B树每个节点 key 和 data 在一起,无法区间查找。
3、B+树更适合外部存储,也就是磁盘存储。由于父级节点无 data 域,每个节点能索引的范围更大更精确
4、注意这个区别相当重要,B树每个节点即保存数据又保存索引,所以磁盘IO的次数很少,B+树只有叶子节点保存,磁盘IO多,但是区间访问比较好。
10w个id,怎么去100亿个id里找数据,怎么做能更快,分库分表?
典型的Top K算法(分治思想)
1、先对这批海量数据预处理,在O(N)的时间内用Hash表完成分组(相同单号被分配到Hash桶中的同一条链表中) %20 20个文件,每个文件500M 堆的大小取决于机器的内存值500M;
2、借助堆这个数据结构,找出Top K,时间复杂度为N‘logK
3、对每个堆中的TOPk,计算出前k个数(归并排序)
方案1:可以估计每个文件的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。
遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,…,a999)中。这样每个小文件的大约为300M
遍历文件b,采取和a相同的hash函数将url分别存储到1000小文件(记为b0,b1,…,b999)。这样处理后,所有可能相同的url都在对应的小文件(a0vsb0,a1vsb1,…,a999vsb999)中,
不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可
求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。
方案1:用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存内存,还可以接受。
然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。
方案2:也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素
方案1:先做hash,然后求模映射为小文件,求出每个小文件中重复次数最多的一个,并记录重复次数。然后找出上一步求出的数据中重复次数最多的一个就是所求100w个数中找出最大的100个数
用一个含100个元素的最小堆完成。复杂度为O(100w*lg100)
MySQL底层依赖的是B+树这种数据结构,Redis这样的Key-Value数据库中的索引,又是怎么实现的呢?底层依赖的又是什么数据结构呢?
Q:Trie树:如何实现搜索引擎的搜索关键词提示功能?(为了方便快速输入,当你在搜索引擎的搜索框中,输入要搜索的文字的某一部分的时候,搜索引擎就会自动弹出下拉框,里面是各种关键词提示)
A:‘字典树’。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题.
Trie树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起(感觉有点像霍夫曼编码:左0右1)
时间复杂度:O(k) k为字符串长度
应用场景:自动输入补全,比如输入法自动补全功能、IDE代码编辑器自动补全功能、浏览器网址输入的自动补全功能等等
Q:Trie树应用场合对数据要求比较苛刻,比如字符串的字符集不能太大,前缀重合比较多等。如果现在给你一个很大的字符串集合,比如包含1万条记录,如何
通过编程量化分析这组字符串集合是否比较适合用Trie树解决呢?也就是如何统计字符串的字符集大小,以及前缀重合的程度呢?
A:依次读取每个字符串的字符构建 Trie 树,用散列表来存储每一个节点。每一层树的所有散列表的元素用一个链表串联起来,求某一长度的前缀重合,在对应树层级上遍历该层链表,
求链表长度,除以字符集大小,值越小前缀重合率越高。遍历所有树层级的链表,存入散列表,最后散列表包含元素的个数,就代表字符集的大小
如何存储一个Trie树?
算法无法再继续优化的情况下,如何来进一步提高执行效率呢?可以使用一种简单但好用的优化方法,那就是并行计算。
微博:有向图(入度代表粉丝数,出度代表关注数)
社交关系存储方法:邻接表(存储用户关注关系)+逆邻接表(存储被关注信息)
需求:判断用户A是否关注了用户B;判断用户A是否是用户B的粉丝;用户A关注用户B;用户A取消关注用户B;
根据用户名称的首字母排序,分页获取用户的粉丝列表;根据用户名称的首字母排序,分页获取用户的关注列表。
如何迅速判断俩用户之间的关注关系?
因为需要按首字母排序,获取粉丝列表或关注列表,在邻接表右边使用跳表是最合适的(跳表存储的数据有序)。这是因为,跳表插入、删除、查找都非常高效,时间复杂度是O(logn),空间复杂度上稍高,是O(n)
如何解决数据量大的问题?
可以通过哈希算法等数据分片方式,将邻接表存储在不同的机器上。例如:在机器1上存储顶点1,2,3的邻接表,在机器2上,存储顶点4,5的邻接表,当要查询顶点与顶点关系的时候,我们就利用同样的哈希算法,先定位顶点所在的机器,然后再在相应的机器上查找。
微信:无向图(好友间建立一条边)
QQ:带权图(每条边都有一个权重,可以通过权重表示QQ好友间的亲密度)
Gradle这个编译工具,内部组织task的方式用的是有向图;
互联网上网页之间通过超链接连接成一张有向图;
城市乃至全国交通网络是一张加权图;
问题阐述:一个完整的项目往往会包含很多代码源文件。编译器在编译整个项目的时候,需要按照依赖关系,依次编译每个源文件。比如,A.cpp依赖B.cpp,那在编译的时候,编译器需要先编译B.cpp,才能编译A.cpp。我们可以把源文件与源文件之间的依赖关系,抽象成一个有向图。每个源文件对应图中的一个顶点,源文件之间的依赖关系就是顶点之间的边。
两种实现方式:Kahn和DFS
1、Kahn基于贪心算法,思路是如果s需要先于t执行,那就添加一条s指向t的边,如果某个顶点入度为0, 也就表示,没有任何顶点必须先于这个顶点执行,那么这个顶点就可以执行。
我们先从图中,找出一个入度为0的顶点,将其输出到拓扑排序的结果序列中(对应代码中就是把它打印出来),并且把这个顶点从图中删除(也就是把这个顶点可达的顶点的入度都减1)
我们循环执行上面的过程,直到所有的顶点都被输出。最后输出的序列,就是满足局部依赖关系的拓扑排序。
3、拓扑排序的应用:需要通过局部顺序来推导全局顺序的,一般都能用拓扑排序来解决。
实现拓扑排序的Kahn算法能检测图中环的存在,若果最后输出的顶点个数少于图中顶点个数,说明图中还有入度不是0的顶点,那就说明,图中存在环。
这就是环的检测问题:(只需要记录已经访问过的用户ID,当用户ID第二次被访问的时候,就说明存在环)
如果想知道数据库中所有用户之间的推荐关系,有没有存在环的情况,需要使用拓扑排序算法,我们把用户之间的推荐关系,从数据库中加载到内存中,然后构建成有向图的数据结构,再利用拓扑排序,就可以快速检测出是否存在环。
建模:将地图抽象成具体的数据结构-图,把每个岔路口看作一个顶点,岔路口与岔路口之间的路看作一条边,路的长度就是边的权重。如果路是单行道,我们就在两个顶点之间画一条有向边;如果路是双行道,我们就在两个顶点之间画两条方向不同的边。这样,整个地图就被抽象成一个有向有权图。
最短路径算法实现Dijkstra 时间复杂度是O(E*logV) E为所有边的个数,V表示顶点的个数
思想:1、采用贪婪法:总是选取最接近源点的顶点;2、使用优先队列并按照到s的距离来存储未被访问过的顶点;3、不能用于权值为负的情况。
具体而言:Dijkstra通过回溯穷举所有从s到达t的不同路径,在此基础上,利用动态规划的思想,对回溯搜索进行了剪枝,只保留起点到某个顶点的最短路径,继续往外扩展搜索,能得到最优解。
实际的应用中,相比Dijkstra算法,地图软件更多的是A*启发式搜索算法
实例2:在计算最短时间的出行路线中,如何获得通过某条路的时间呢?
与时间相关的变量:1、路径长度;2、路况;3、拥堵情况;4、红绿灯个数,获取这些因素后就可以建立一个回归模型(如线性回归)来评估时间
情况3是数据是动态的,可以通过与交通部门合作获得路段拥堵情况,联合其他导航软件获得该路段的在线人数
实例3:今天讲的出行路线问题,我假设的是开车出行,那如果是公交出行呢?如果混合地铁、公交、步行,又该如何规划路线呢?
混合公交、地铁和步行时,地铁时刻表是固定的,容易估算。公交虽然没那么准时,大致时间是可以估计的,步行时间受路拥堵状况小,基本与道路长度成正比,也容易估算。总之,公交、地铁、步行,时间估算会比开车更容易,也更准确些。
实例4:翻译系统。只能针对单个词来做翻译。如果要翻译一整个句子,我们需要将句子拆成一个一个的单词,再丢给翻译系统。针对每个单词,翻译系统会返回一组可选的翻译列表,并且针对每个翻译打一个分,表示这个翻译的可信程度。我们希望计算出得分最高的前K个翻译结果。
解答:使用Dijkstra最短路径算法
与Dijkstra算法的三点区别:
1、优先级队列构建的方式不同。A算法是根据f值(也就是刚刚讲到的f(i)=g(i)+h(i))来构建优先级队列,而Dijkstra算法是根据dist值(也就是刚刚讲到的g(i))来构建优先级队列;
2、A算法在更新顶点dist值的时候,会同步更新f值;
3、循环结束的条件也不一样。Dijkstra算法是在终点出队列的时候才结束,A算法是一旦遍历到终点就结束。
(A每次从f值最小的顶点出队列,一旦搜索到重点就不再继续考察其他顶点和路线,也就不可能找出最短路径)
总结:A算法属于一种启发式搜索算法,还有一些其他的同类型算法:IDA算法、蚁群算法、模拟退火算法等
启发式搜索算法利用估价函数,避免“跑偏”,贪心地朝着最有可能到达终点的方向前进,这种算法找出的路线,并不是最短路线,但是启发式搜索算法能很好地平衡路线质量和执行效率,
它在实际的软件开发中的应用更加广泛。
补充1:break的作用域
break 跳出最近的{}包裹的代码,如果有标记,就跳出标记的{}
好处:如果用散列表存储着1千万的数据,数据时32位的整型数,也就是需要4字节的存储空间,那总共至少需要40MB的存储空间,如果我们通过位图的话,数字范围在1到1亿之间,
只需要1亿个二进制位,也就是12MB左右的存储空间即可。
布隆过滤器是由一个很长的二进制向量(位图)加一系列随机映射函数(例如hash函数)组成。它可以用于检索一个元素是否在一个集合中。
例如:我们把hash函数设计成f(x)=x%n,其中,x表示数字,n表示位图的大小(1亿),也就是,对数字跟位图的大小进行取模求余。
hash函数的特殊设计:一个hash函数可能会存在冲突,那使用多个hash函数一块儿定义一个数据,我们把这K个数字作为位图中的下标,降低冲突的概率。当要查询某个数字是否存在的时候,我们用同样的K个哈希函数,对这个数字求哈希值,如果都是true,则说明,这个数字存在。(带来了新的缺点:容易误判)优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误判(即判断一个元素存在,可能被误判,而判断这个元素不存在,则一定不存在)和删除困难
数据结构采用了bitmap 位图 解决缓存击穿的问题,有一个拦截机制,能迅速判断请求是否有效,他的内部维护了一系列合法有效的key,若是请求的元素在这个集合当中,说明请求有效。
布隆过滤器有一定的误检率,即判断一个元素存在,可能被误判(例如布隆过滤器中只存在A和E,但是对B进行过滤时,刚好被定位到了A的上半部分和E的下半部分,被误判为存在)
原则:找到跟你口味偏好相似的用户,把他们爱听的歌曲推荐给你;找出跟你喜爱的歌曲特征相似的歌曲,把这些歌曲推荐给你
1.基于相似用户做推荐(基于用户建模的协同过滤算法推荐)
计算多维向量(用户对各首歌曲的喜爱程度作为向量)之间的距离,使用欧几里得计算公式
2.基于相似歌曲做推荐
针对每首歌曲,将每个用户的打分作为向量
在http头文件里面保存了content和content-type标签,用于记录传输文件的字节段。
《会计信息系统复习题含答案》由会员分享,可在线阅读,更多相关《会计信息系统复习题含答案(45页珍藏版)》请在人人文库网上搜索。
1、会计信息系统习题汇总 第1章 信息时代的变迁与会计信息系统的产生与发展 一、判断题 信息和数据是同一个概念。 2、计算机会计信息系统是由硬件系统、软件系统组成的。因此,只要购买了计 算 机、系统软件和会计软件,就表明企业可以利用计算机会计信息系统完成各种 会计 工作。 3、计算机会计信息系统和手工会计信息系统完全不同。 4、成批处理方式和实时处理方式对计算机会计信息系统来说都是非常有用的。 5、计算机会计信息系统与手工会计信息系统相比,会计档案存储方式发生了巨大的 变化,但就会计档案的安全性来讲,磁性会计档案与纸张会计档案一样安全。 6、知识是以各种方式将一个或者多个信息关联在一起的信息结构,
2、是对客观世界规 律性的总结。 7、基于计算机的会计信息系统是一个人机结合的系统,其基本构成包括硬件资源、 软件资源、信息资源和会计人员等基本要素。 8、会计信息系统的应用体系结构主要有文件/服务器(F/S)、客户/服务器(C/S)、 浏览器/服务器(B/S) o目前,客户/服务器(C/S)和文件/服务器(F/S、在企 业应用较 多,已经成为主流趋势。 9、会计信息系统的功能结构主要是描述会计信息系统的核心一一会计软件(会计 管理软件)由哪几个子系统组成,以及每个子系统的基本功能。 10、企业资源计划(enterprise resource planning , ERP可以分别从管理思 想、软件
3、产品、管理系统这三个层次理解。 二、单选题 仁 信息是数据加工的结果,它可以用文字、数字、图形等形式,对客观事物的性 质、形式、结构和特征等方面进行反映,帮助人们了解客观事物的本质,信息必然 是数据,但数据未必是()o A、文字 B、会计数据C、图形D、信息 2、计算机会计信息系统是一个人机结合的系统,该系统有人员、计算机硬件、 ()和会计规范等基本要素组成。 A、会计软件 B、计算机软件一系统软件和应用软件 C、程序 D 、系统软件 3、人工与计算机混合收集方式是指首先由财会人员将反映各种经济业务的原始纸 质凭证收集、审核和确认,然后通过()、屏幕将数据直接输入计算机存入凭证文件 的一种方式
4、。 A、打印机 B、鼠标C、键盘D、软盘 4、从信息技术应用的角度看,知识是对同类()的积累,是为有助于实现某 种特定的目的而抽象化和一般化的信息。 A、图形 B 信息C 关系D 事务 5、ERP是整合企业管理理念、业务流程、基础数据、人力物力、计算机硬件和 软 件于一体,实现跨地区、部门、公司整合实时信息的一种企业管理信息系统。ER() 的英文缩写。 A、企业关系过程 B、企业重构过程 C、企业资源计划 D、企业资源绩效评价 6、总账子系统是以()为原始数据,通过凭证输入和处理,完成记账和结账、 银行对账、账簿查询及打印输出,以及系统服务和数据管理等工作。 A、经济业务 B、信息C、记账凭证
5、D、凭证 7、工业企业的基本运作流程包括三大流程:业务流程、会计流程、管理流程。 其中会计流程在三个流程中起到了()作用。 A、数据处理 B、收集数据C、桥梁D、基础 模块结构图着眼于数据流,反映系统的 物理模型,即怎么逐步实现系统的总功能。 37、代码设计就是设计系统所使用的各种代码的编码规则和具体的代码及其表示的对 象的对照表。 38、一般来说,代码越短,分类、准备、存储和传送的开销越低;代码越长,对 数据 检索、统计分析和满足多样化的处理要求就越高。 39、从系统开发的角度,输出决定输入,即输入数据只有根据输出的要求确定。 40、系统的安全保密性要有各种管理制度和人工控制才有保证。 二、
6、单选题 V在复杂的信息系统开发过程中,通常采用的方法是()。 Ax原型法B、面向对象法 C、结构化方法为主,其他方法为辅 D、CASEJ法 2、系统分析阶段的任务是回答系统是()的问题,系统设计阶段则是回答系 统()的问题。 A、为什么做 怎么做B、怎么做 做什么 C、做什么怎么做D、怎么做为什么这样做 3、系统分析阶段的任务是在可行性研究的基础上,对现行系统进行详细调查和 全面分析,描述现行系统的业务流程,指出现行系统的局限性和不足,对现行系 统提出修改方案,确定新系统的目标和逻辑功能要求,即提出新系统的( ) A、逻辑模型B、数据流程图 C、数据字典D、物理模型 4、系统分析阶段的主要文档
7、是()。()是系统设计的依据,也是未来系统 验收的依据。 系统分析报告 系统设计报告书 程序设计说明书 系统分析报告书 A、系统可行性分析报告 B、系统分析报告书 C、系统可行性分析报告 D系统分析报告书 5、系统设计包括()和()。 A、系统总体设计系统详细设计B、系统逻辑设计系统物理设计 C、系统输入设计系统输出设计D、系统数据设计系统程序设计 6、对于会计信息系统的开发,现在较为流行的开发方法是()。 A、结构化开发方法B、原型化方法 C、结构化和原型化方法相结合的混合方法 7、 D逻辑模型和物理模型相结合的混合模型 采用 结构化开发方法开发信息系统,系统开发过程中最关键的阶段是()。
8、A、可行性研究与计划B、系统分析 C、编程与测试D 、运行与维护 8、常用的子系统划分原则是()。 A、按过程划分B 、按低耦合度、高内聚度划分 C、按时间顺序划分D、按设备要求划分 9、 ()是最小的数据组成单位,对每个(),需要描述以下属性:() 的名称、别名、类型、取值范围和取值的含义、()的长度。 A、外部实体B、数据存储C、数据流D、数据元素 10 x()是系统分析的最终结果,它反映了所建立系统的功能需求、性能需求、 运行环境等方面的内容,是开发人员和用户共同理解计算机会计信息系统的桥梁, 也是系统设计的基础。 A、系统分析说明书B、概要设计说明书 C、详细设计说明书D、程序设计说明
9、书 11x通常认为面向对象法的步骤是()。 A、系统分析;系统设计;程序设计;系统测试 B、定义问题;抽象识别对象;详细设计问题,给出对象的实现描述;程序实现 C、明确用户基本信息需求;建立初始原型;修改和完善原型 D抽象识别对象;定义问题;详细设计问题,给出对象的实现描述;程序实现 12、数据存储符号指出了数据保存的地方,是对数据存储的逻辑描述。数据流箭 头 指向存储符表示()数据,箭头来自存储符表示()数据。 A、存入读出B、读出存入 C、备份恢复D、恢复备份 13、通常用管理业务流程图和表格分配表描述()。 A、组织的结构 B、业务状况 C、数据、数据流程及各项功能D、处理功能和决策模型
10、 14x系统设计阶段是在系统分析并明确了系统( )的基础上,根据实际的技术 条件、经济条件和组织条件,确定系统的实施方案,即设计出能在计算机上实 现的 ()O A、数据流程图系统业务流程图B、数据流程图系统功能结构图 C、系统中各个成分的含义D、系统中数据的特征 C、逻辑模型物理模型 、业务处理流程图数据流程图 三、多项选择题 1、采用结构化系统开发方法开发信息系统,要按照顺序经历系统规划、系统分 析、 系统设计、系统实施和系统运行维护等阶段。在每个阶段,都要有明确地任 务,并产生相应地文档资料。其主要文档资料有()。 A、系统分析报告书 B 、系统可行性报告书 E、系统测试报告 E、处理流程
11、设计 C、系统概要设计说明书D、系统详细设计说明书 2、系统设计阶段主要包括()。 A、系统总体结构设计 B、数据流程图设计 C、代码与数据文件设计D、子系统功能模块设计 3、面向对象法可以是一种()。 A分析方法B设计方法C、思维方式D、程序设计方法 4、面向对象的方法以对象为中心,具有()。 A、封装性 B、抽象性C、继承性D、动态链接性 5、可行性分析应从()方面考虑。 A、技术可行性B、经济可行性C、设备可行性D、管理可行性 6、经过可行性分析,可以得出如下几个可能的结论()。 A、如果系统开发条件成熟,且有必要开发,就可以开始详细调查,继续进行系统分 析 B、虽然系统开发条件不足,但
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。