zoukankan      html  css  js  c++  java
  • [OT]扯淡QQ群里面盛传的一套题目

    这几天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那么通俗易懂,词汇量还那么大....

  • 相关阅读:
    eclipse的优化 gc.log
    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
    JVM系列三:JVM参数设置、分析
    热加载
    彻底理解JAVA动态代理
    Linux下查看Web服务器当前的并发连接数和TCP连接状态
    个人博客 V0.0.3 版本 ...
    HTML5本地存储——IndexedDB(一:基本使用)
    如何在Blog中加入Google Analytics
    webpack中实现按需加载
  • 原文地址:https://www.cnblogs.com/egmkang/p/1737884.html
Copyright © 2011-2022 走看看