这几天QQ群里面来来回回把这套题目发了n遍....我也来做做
会聚天下软件开发精英,以振兴中国软件事业为己任!
本群不定期举行软件开相关知识讲解和讨论!
进入本群必须答对一半以上的测试题:(加入者请附上答案)
1、 要想编写高效代码,必须掌握那一知识?
A、编译原理 B、计算机体系结构 C、C语言
扯淡:
编译原理学好了能不能写出高效的代码我不知道,因为我编译原理学的非常烂....
计算机体系结构,了解这个可以编写出相对高效的代码(对于当前多核时代,这种优势似乎更明显)
C语言...虽然C语言拥有很高的运行效率,但是用其他语言照样可以写出来高效的代码(关键看人)
个人觉得要编写高效的代码,学好数据结构和算法是必须的.
2、从JSON、YAML等数据交换格式中,能够看出数据从结构上最终可分为几种类型?
A、标量、数组、散列 B、字符、数字、序列、映射 B、字符、数字、对像
扯淡:
JSON听说过,没用过;YAML没听过,也没用过...
这个标量比较扯淡,不说.
该问题无非就是序列化和反序列化的问题.
看看你的数据对象里面都有什么东西?字符,数字,还有啥?还有一个递归的概念.
因为对象可以拥有一个对象作为数据成员.
所以给我选的话,我选B.(好吧我比较喜欢扯淡,这我承认,因为题目里面有俩B,我选择B胜的概率要大很多:-D)
3、在枚举、数组、散列中数据结构不同的一个?
A、枚举、 B、数组、 C、散列
扯淡:
枚举压根就不是数据结构,是编程语言里面的一个概念
数组和散列都是数据结构
4、关于线程与进程,说法正确的一个是?
A、都拥有自己的栈空间 B、线程没有栈空间 C、进程不是一种特殊线程
扯淡:
这个问题本身貌似不好回答
线程没有栈空间这本身就是错误的
进程不是一种特殊的线程,反着说就是"是一种特殊的线程",或者说进程和线程没关系.据我所知,
较早期的Linux内核里面用进程来实现了线程,那么就可以这么说,进程是一种特殊的线程,只是他的
上下文更大一些(切换起来复杂耗时).
5、关于动态语言与静态语言,说法正确的一个是?
A、动态语言动态分配内存 B、静态语言必须编译执行 C、两种语言无本质差别
扯淡:
动态语言和动态分配内存八竿子都打不上.静态语言也动态分配内存.
静态语言必须编译执行.这个就很好笑了,优点,大家都会吸收学习的.为啥要编译执行呢?因为性能高.
现如今的动态语言,很多都有JIT,那就是编译执行的;而且,之前不知道在哪里看到(貌似是infoq),有好
事者在浏览器里面解释执行C语言.
俩语言无本之差别.....本质差别就是动态语言的表达能力强于静态语言,因为他可以动态改变.我之前
在别人的Blog上面看到js写的Sample,写的一个小蝌蚪->青蛙的Sample,那玩意儿可以在运行时切掉自己
的尾巴,给自己添上四个脚.试问你的C语言有这般能力么?
看别人用py实现的多分派就很自然,在C++里面搞这个就有一点蛋疼了...
6、64位CPU,理论支持最大内存为?
A、8G B、128G C、4G*G
扯淡:
关于这个话题我之前和别人吵过一架.....说来也无趣.
我个人的观点,支持的最大内存和CPU的地址总线有直接联系,与CPU的数据总线没多少联系.你不能造一个
拥有128bit寄存器和数据总线的CPU,就号称是128Bit的CPU.地址总线决定寻址能力.
目前家用级别的X64 CPU,我所知道的AMD64的地址总线不是48就是40,这个应该是在我高中的时候看到的
电脑报上面看到的.
7、链表不具有的特点是:
A、不必事先估计存储空间 B、可随机访问任一元素 C、**删除不需要移动元素
扯淡:
链表没有随机访问元素的能力.
8、CPU指令流水线的级数越多,则?
A、执行一条指令越慢 B、指令流水停滞越重 C、运算速度越快
扯淡:
对于这个了解不是很多,都是高中时代的了解.
CPU把一个指令细化成很多操作,这一条指令在流水线上处理,第一道工序搞定之后才去第二道工序.
我所知道的精简指令集CPU大多都是各位数字的流水线,比如说8之类的.
试想你的奔腾CPU,拥有31级流水线,那么一个指令需要31道工序才能得到运算结果.....
指令执行的快慢,运算速度的快慢和流水线级数没有必然联系,这个还要看主频,还有其他的因素.
9、固定数组和可变数组的区别是?
A、固定数组不分配内存 B、可变数组预分配内存 C、内存分配无差别
扯淡:
我不晓得他所说的可变数组是C语言里面的概念还是其他语言里面的概念...
C99里面引入了可变数组,之前的数组的大小必须是常量,在C99里面不尽是.记得以前在默认的Blog里
面看到对gcc实现的讨论,貌似是gcc用自己一个_Allocate函数在运行时申请内存,sizeof()计算使用了
bx寄存器(?),一两年前看到的,有些忘了.
10、如果把if…else…语句,拆分成两个if语,在执行效率上有什么差别?
A、一个if执行效率高 B、两个if相当于执行else时的效率 C、一样
扯淡:
if(A)...else...变成if(A)...if(B)...,那么直觉上面判断第一个效率要高一点,因为只判断了一次
11、怎样构造良好的数据表示,最好使用?
A、有意义的变量名 B、函数来操作数据 C、类封装数据
扯淡:
想要你的数据看起来易懂一些,还是选择封装.
12、Web 2.0 思想的理想标记语言是那一个?
A、XML B、XHTML C、HTML
扯淡:
貌似说的是XML吧,没做过多少Web开发....
13、怎样避免使用内联字面量,如if( i < 45),而应代替为?
A、常量 B、变量 C、属*
扯淡:
常量.
原先C里面一直使用宏,也(推荐)可以选择常量.
14、高级语言中都会有一些破坏控制流程的语句。如break、continue、return、throw这类似于goto语句的破坏威力,那如何避免呢?正确的一个是?
A、只在循环中使用break和continue B、避免在方法中使用多个return C、使用try…catch控制流程
扯淡:
try...catch绝对不能当作控制流程的手段,本身catch的字面意思是捕捉,他要捕捉的是异常,而不是控制流程.
在循环的外面可以用break和continue嘛??我没写过这样的代码,不知道........
避免在一个方法中出现多个return,我觉得这个建议还不错,毕竟不会是代码看起来那么混乱
15、怎样处理异常才是正确的?
A、捕获所有异常 B、只捕获要处理的异常 C、捕获具体异常
扯淡:
处理异常貌似需要补货具体的异常,有针对性才能处理.
否则出现exception,出来一个MessageBox说,程序崩溃,需要重启:-D
16、关于使用If…Eles…语句的指导原则错误的一个是?
A、用If子句处理常见情况 B、避免空If子句 C、不能忽略Else子句
扯淡:
if...else...还有什么诀窍么??
17、编译器设计包括那几部分?
A、源码、中间码、机器码 B、词法分析和语法分析 C、预处理、编译、执行
扯淡:
要设计编译器的话就需要分析词法和语法,貌似需要搞成一个什么抽象语法树之类...编译原理学的太差...
18、导致软件缺陷的最常见因素是?
A、未初始化变量 B、内存溢出 C、无法释放资源
扯淡:
第一个貌似说的是空指针(野指针),内存溢出貌似说的是数组越界
:-D这俩错误在我刚开始写C/C++的时候,都出现过⊙﹏⊙b汗(以后不出现我不敢保证,只能争取不再犯这样的错误)
不晓得什么叫无法释放资源(new出来的不能delete??)
19、下面那一个不能作为XML的文档类型定义
A、DTD B、Schemas C、XSLT
扯淡:
有一点看不懂...
XSLT是用XML描述的XML格式化语言
DTD我说不上来....
Schemas,这个是什么??
20、String类的IndexOf()方法返回的类型是?
A、Int B、String C、Object
扯淡:
既然是index了,那么就是下标.
21、关于接口理解正确的一个是?
A、Interface B、函数定义 C、意图
扯淡:
ABC答案有自己的理解么??
我不知道作者在说什么接口,是广义的接口还是某种语言的接口(尤其指Interface关键字).
广义的接口包含两类,一种是对数据的抽象,一种是对行为的抽象.这是我的理解.(欢迎拍砖)
对于数据的抽象,可以映射到Java/C#里面的抽象类;
对于行为的抽象,可以映射到Java/C#里面的Interface.
如果说接口只说Interface,那就是不全的.毕竟接口的概念跟C#/Java无关.
22、下面那一个是最简单的桥接模式?
A、接口 、B、继承 C、多态
扯淡:
汗颜,我虽然买了本设计模式,但是从来没看过...我虽然自诩"机械教条主义",但是不会教条使用设计模式
(这里面有一个前提就是,我不懂设计模式)
看了一下HeadFirst里面的桥接模式的类图,大约能才出来多态是答案.
23、OOD中常说“封装变化”,这个变化是指?
A、意图 B、实现 C、功能
扯淡:
这个不好说,因为我不懂OO.我看过若干本OO的书,但是一直不懂什么叫OO,有达人愿意指点一二么??先谢谢了.
实现是软件开发中最容易变化的,意图还不至于太变化,还不至于今天让写一只马,明天就变成驴子:-D
这是我猜的
24、下面那一个属于表现层?
A、Hibernate B、ActiveRecord C、Struts
扯淡:
Hibernate是ORM,属于数据访问.我虽然写过不少的数据库访问程序,但是从来都没有用过ORM(汗).大三的时候
是因为我还不知道世上还有这玩意儿,之后呢去写WM上面的程序了,用那玩意儿效率低.
ActiceRecord不晓得干啥的
Struts,貌似是一个框架,没用过,因为我不是Java阵营那边的....
25、Jsp实际是把MVC中的那两层耦合到了一起?
A、MV B、MC C、CV
扯淡:
jsp中肯定包含V.剩下的就是C了...
因为jsp和asp.net的Form模型在形式上将,是一样的.我只是看过jsp写过的页面,跟那个"企业应用架构模式"里面
描述的某种模式有一点类似.
26、面向方面编程范式(AOP)本质上是基于?
A、函数编程 B、对像编程 C、元编程
扯淡:
不懂,完全不懂.
AOP肯定不是基于函数式编程.
猜一个,应该是元编程.(是不是需要访问很多的元数据捏??)
27、能间接体现出“针对接口编程”这一思想的OOD原则是?
A、Liskov替代原则 B、最小惊讶原则 C、单一职责原则
扯淡:
可以看看SOLID原则,不错的说.那本"敏捷软件开发"前面也很有感染力.
28、Spring的核心思想是?
A、AOP B、IOC C、MVC
扯淡:
不懂.
29、关于策略模式与状态模式的区别,错误的一个是?
A、形式上一样 B、视角不同 C、结构上不同
扯淡:
不懂.
30、下面那一种模式不适合对Business Componen 进行可扩展性优化
A、工厂模式 B、IOC模式 C、观察者模式
扯淡:
不懂.
31、下面哪一个接口能够实现对Web访问者的身份认证?
A、HttpSession B、HttpServlet C、HttpApplication
扯淡:
Web里面从来都没有什么Session之类的概念,有的只是HTML+JS+CSS+HTTP.
所谓的Session其实都是通过QueryString或者Cookie来实现.
32、在数据访问层(DAL)设计中,那一个是不常用的设计模式?
A、工厂模式 B、Helper模式 C、桥接模式
扯淡:
Helper模式是那种模式??
工厂模式,咳咳,也许是我中毒太深,我只看过PetShop 4.0,那里面就是用工厂模式(抽象工厂)来替换
SQL Server和Oracle两种数据库实现的.
桥接模式应该用的不多吧??
33、单元测试用于那一开发过程中?
A、设计 B、实现 C、验收
扯淡:
单元测试用于实现和设计过程中.
34、下面那一项服务能提高软件的性能品质?
A、工厂服务 B、缓存服务 C、配置服务
扯淡:
Hash是万金油,是提高性能的万金油.不管什么缓存,都是Hash的思想,或者是特化.
35、下面那一个是以过程为导向的软件开发过程?
A、统一软件开发过程 B、敏捷软件开发过程 C、极限软件开发过程
扯淡:
对软件过程都不懂.
敏捷貌似是以迭代为基本的吧.
36、保证敏捷软件开发的首要措施是?
A、测试驱动 B、快速迭代 C、模型驱动
扯淡:
TDD
37、关系数据库中1-3NF范式的目的是
A、分解表 B、减少冗余 C、分解列
扯淡:
减少冗余
38、数据库中的存储过程是通过那一方式来提高执行效率的?
A、缓存 B、预先编译 C、优化器
扯淡:
预先编译
39、关系数据库中的Null,说法正确的一个是?
A、Null表示未知 B、Null表示False C、Null表达示不等于Null
扯淡:
这个概念我很模糊...
40、关系数据库中使用那一语句进行差集运算?
A、EXCEPT B、JOIN C、UNION
扯淡:
JOIN是连接,跟笛卡尔乘有那么一点关系
UNION (ALL)自然就是集合的加法运算
EXCEPT,没见过,听网友说是SQL Server新版本加进来的关键字
我记得学数据库原理的时候,集合的加减乘除都是基本内容(考试肯定会考的),很可惜,
好些日子没用,都忘光了...汗
PS:
1. 我不是来答题的,我不是来提供答案的,我只是来捣乱的
有错误的地方麻烦大家指出来:-D
2. 我承认我答不好这套题目,貌似好多东西都是我现在不再做的了....比如说企业级开发,比如说Web....
3. 我很希望高人给我科普一下OO相关的知识.我现在约搞越混,看Booch的OOAD也看不出所以然.那玩意儿
英文版的,又不像Programming Windows那么通俗易懂,词汇量还那么大....