美文网首页笔试&&面试经验
网易校招研发工程师模拟笔试题

网易校招研发工程师模拟笔试题

作者: Torang | 来源:发表于2016-03-20 16:27 被阅读824次

    第一次接触这种完整的笔试题,感觉题目很难的,涉及到方方面面的问题:Java、C++、计算机网络、操作系统、计算机组织与结构、算法导论、数据库、Linux指令等等问题;在这里做个总结,希望和大家共同学习;

    选择题(15题)
    1、VC提供一种被称为Watch的机制来观看变量和表达式的值,由于指针指向的数组,Watch只能显示第一个元素的值,为了显示数组的后续内容,或者要显示一片内存的内容,可以使用()功能
    A、Regsters
    B、Varibles
    C、Conditions
    D、Memory

    正确答案:D;本题考察VC调试
    解析:http://www.cnblogs.com/lidabo/p/3631224.html
    Watch
    VC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。
    观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。
    VC提供一种被成为Watch的机制来观看变量和表达式的值。在断点状态下,在变量上单击右键,选择Quick Watch, 就弹出一个对话框,显示这个变量的值。
    单击Debug工具条上的Watch按钮,就出现一个Watch视图(Watch1,Watch2,Watch3,Watch4),在该视图中输入变量或者表达式,就可以观察 变量或者表达式的值。注意:这个表达式不能有副作用,例如++运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致 软件的逻辑被破坏。
    Memory
    由于指针指向的数组,Watch只能显示第一个元素的值。为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。在Debug工具条上点memory按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的内存的内容。
    Varibles
    Debug工具条上的Varibles按钮弹出一个框,显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量,以红色显示。
    寄存器
    Debug工具条上的Reigsters按钮弹出一个框,显示当前的所有寄存器的值。

    2、根据关系型数据库规范范理论,关系数据库中的关系要满足第一范式,在部门关系中,因哪个属性而石塔不满足第一范式?()
    A、部门名
    B、部门成员
    C、部门总经理
    D、部门号

    正确答案:B;本题考察关系型数据库
    解析:
    在任何一个关系型数据库中,第一范式(1NF)是对关系模型的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库;关系数据库的第一范式规定:关系中的每一个属性都是不可分割的。而本关系中,“部门成员”显然包括“部门总经理”,所以它是可分的。这样就不满足第一范式的条件;

    3、用命令行方式运行一下代码的运行结果是()

      public class f {
        public static void main(String[] args) {
            String foot1 = args[1];
            String foot2 = args[2];
            String foot3 = args[3];
        }
    }
    

    命令:java T11 a b c
    A、a b c
    B、t11
    C、程序运行异常
    D、程序编译错误

    这道题我没有找到正确,但是经过我在命令行中编译的结果来看应该是选:C
    解析:
    首先程序编译通过,执行命令java T11 a b c是无法通过的,因为根本没有T11主类;估计题目出错,应该将T11改为f,在控制台执行完javac f.java编译通过后,接着执行java f a b c; 运行时抛出 java.lang.ArrayIndexOutOfBoundsException 异常;
    由于String[] args接受从控制台中输入的字符串;所以在main函数里args的数组长度为3,则这里执行String foot3 = args[3]时出现数组越界;所以该题目选择C、程序运行异常;

    4、
    #include <iostream>
    using namespace std;
    class TestClass{
    char x;
    public:
    TestClass(){cout<<'A';}
    TestClass(char c){cout << c;}
    ~TestClass(){cout<<'B';}
    };
    int main() {
    TestClass p1,*p2;
    p2 = new TestClass('X');
    delete(p2);
    return 0;
    }

    执行这个程序的结果是()
    A、AXBB
    B、AAXBBB
    C、AAXB
    D、XB

    正确答案 A;本题考察C++的构造函数和析构函数
    解析:
    p1执行默认构造函数,p2执行传参构造函数;都需要执行析构函数来释放内存,只是p1时自动释放,p2需要手动释放,p2在p1之前执行析构函数;

    5、现有4个同时到达的作业J1、J2、J3、J4,他们的执行时间分别是1小时、3小时、5小时、7小时,系统按单道方式运行且采用短作业优先算法,则平均周转时间是()小时
    A、5
    B、4
    C、7.5
    D、6

    正确答案:C;本题考查操作系统相关问题
    解析:

    执行次序 提交时间 执行时间 开始时间 完成时间 周转时间
    J1 0 1 0 1 1
    J2 0 3 1 4 4
    J3 0 5 4 9 9
    J4 0 7 9 16 16

    平均等待时间:将所有作业的运行时间加起来除以总的作业数 (1+3+5+7)/4=4
    平均周转时间:将所有作业运行的时间和等待的时间全部加起来除以作业数,这四个作业的等待时间分别是:0,1,4,9
    (1+3+5+7+0+1+4+9)/4=7.5

    6、浮点数的尾数基值取2,并采用隐含位表数方法,则这种浮点数的表数效率为()
    A、94%
    B、75%
    C、100%
    D、50%

    正确答案:C;本题考查指令系统中的浮点数的表数效率;
    解析:http://202.197.191.206:8080/22/content/chap2/section1/08.htm
    从浮点数的表数范围和表数精度来看,尾数基值取2或4最好,但当尾数基值等于2时,表数效率最低只有50%。为例在尾数基值取2时提高浮点数的表数效率,目前在许多机器中采用了隐藏位数表数法。具体做法是:因为在尾数基值取2时,规格化浮点数尾数的最高位一定是1(如果尾数用补码表示,规格化浮点数尾数最高位一定与尾数符号位相反),所以,浮点数在存储和传送的过程中,尾数最高位可以不表示出来,只在计算时恢复这一个隐藏位,或采用某种方法对运算结果进行修正。
    在采用采用隐藏位表数方法之后,当取尾数基值=2时,浮点数的表数效率能够达到最大值100%。如果取尾数基值=4,就不能采用隐藏位表数方法,这时的浮点数的表数效率为75%。
    网上很多答案都认为选D,但是没有看清楚题目是采用隐含位表数方法;

    7、记号O的定义正确的是()
    A、O(g(n))= {f(n) | 对于任何正常数c>0,存在正数和n0>0使得对所有n>=n0有:0<=cg(n)<f(n)}

    B、O(g(n))= {f(n) | 对于任何正常数c和n0使得所有n>=n0有:0<=cg(n)<=f(n)}

    C、O(g(n))= {f(n) | 对于任何正常数c>0,存在正数和n0>0使得对所有n>=n0有:0<=f(n)<cg(n)}

    D、O(g(n))= {f(n) | 对于任何正常数c和n0使得所有n>=n0有:0<=f(n)<=cg(n)}

    正确答案:D;本题来源于算法导论概念;
    解析:
    记号O是用于描述函数渐进行为的数学符号。更确切地说,它是用另一个(通常个更简单的)函数来描述一个函数数量级的渐行上界。在计算机科学中,它在分析算法复杂性的方面非常有用;

    8、关于渐进记号的性质是正确的有()
    A、f(n) = O( g(n),g(n) = O(h(n)) => h(n)=O(f(n)) )
    B、O( f(n) ) + o( g(n) ) = O( min { ( f(n),g(n) ) } )
    C、f(n) = O( g(n) ), g(n) = O( h(n) ) => f(n) = O( h(n) )
    D、f(n) = O(g(n)) <=>g(n) = O( f(n) )

    正确答案:C;考查渐进记号的性质;
    解析:
    f(n) = O(g(n)),对于记号O的直观含义是:f(n)的阶不高于g(n)的阶;
    A意思是 f(n)的阶不高于g(n),g(n) 的阶不高于h(n),则 h(n) 的阶不高于f(n);错误;
    B错误:关于渐进符号的定理:对于f1(n),f2(n),如果f1(n) = O(g1(n)),f2(n) = O(g2(n)),则必有
    f1(n)+f2(n) = O(max{g1(n),g2(n)})。
    C意思是f(n)的阶不高于g(n),g(n) 的阶不高于h(n),则 f(n) 的阶不高于h(n);正确;
    D意思是f(n)的阶不高于g(n),等价于g(n)的阶不高于f(n),错误;

    9、一个查询语句执行后显示的结果为;
    1班80
    2班75
    3班null,
    则最有可能的查询语句是()
    A、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3 GROUP BY class
    B、SELECT AVG(成绩) FROM 成绩表 HAVING class <=3 GROUP BY class
    C、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3 order by class
    D、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3

    正确答案:B;本题考察数据库查询语句;
    解析:
    having :对分组后的语句进行过滤;
    select之后如果是聚合函数则group by 分组会显示null的结果,而order by不会显示null的结果;
    order by 用于对结果集进行排序;group by 根据一个或多个列对结果集进行分组。返回结果,所依赖的列中元素不会重复;

    10、磁盘阵列需要的配置文件和逻辑设备是()
    A、Raid.conf与sdc0
    B、Raid.conf与md0
    C、Raidtab与md0
    D、raidtab与hda0

    正确答案:C;本题考查计算机组成原理相关内容;
    解析:
    磁盘阵列的配置文件为/etc/raidtab 逻辑设备为 /dev/md0磁盘阵列

    11、某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有26台计算机,每个子公司在一个网段中,则子网掩码应设为()
    A、255.255.255.128
    B、255.255.255.224
    C、255.255.255.0
    D、255.255.255.192

    正确答案:B;本题考察计算机网络相关内容;
    解析:
    因为有六个子公司,22<6<23,则必须有3位1;最大有26台,24<26<25,最少使用5位表示主机号,必须有5个0,所以二进制位11100000,转换为十进制是224;

    12、mysql中查看SQL模式的命令是()
    A、select global.sql_mode
    B、select @@session.sql_mode
    C、select @@sql_mode
    D、select @@global.sql_mode

    正确答案:C;本题考察mySql数据库相关内容;
    解析
    MySQL数据库中,变量分为 系统变量(以"@@"开头)和用户自定义变量。系统变量分为全局系统变量(global)和会话系统变量(session)。
    @@global 仅用于访问全局系统变量的值;
    @@session 仅用于访问会话系统变量的值;
    @@ 先访问会话系统变量的值,若不存在则去访问全局系统变量的值;
    sql_mode 为系统变量,既是全局系统变量,又是会话系统变量。
    按照题目的描述选择B、C、D均正确,但是这里是单选题,而且给出的答案是C;所以

    13、tcp套接字中不会阻塞的是()
    A、write
    B、bind
    C、accept
    D、read

    正确答案:B;本题考察计算机网络相关知识;
    解析:
    首先,服务器端启动进程,调用Socket创建一个基于TCP协议的流套接字描述符。
    其次,服务进程调用bind命名套接字,将套接字描述符绑定到本地地址和本地端口上。
    再次,服务器端调用listen,开始侦听客户端的Socket连接请求。
    接下来阻塞,直到收到了客户端的connect请求,调用accept进行相应。
    因此,不阻塞bind和listen;即不参与解析和传输应该就不会阻塞

    14、执行指令find / -name “test.c”,按Ctrl+z后的提示有[1]166,可以继续执行的方式有()
    A、Ctrl+h
    B、bg 1
    C、fg 1
    D、kill 166

    正确答案: C;本题考查linux操作系统下的指令;
    解析:
    指令“find / -name “test.c””表示按照名字查找test.c文件;Ctrl+z表示挂起当前任务,[1]166中1表示任务编号,166表示进程号;
    Ctrl+h表示删除光标前的一个字符;
    bg n 命令表示将编号为n的任务转到后台执行;

    fg n 命令表示将编号为n的任务转前台运行;
    kill 166表示将进程为166的任务杀掉;
    所以应该选择C;

    15、在工程网络计划中,工作M的最早开始时间为第16天,其持续时间为5天。该工作有三项紧后工作,他们的最早开始时间分别为第25天,第27天和第30天,最迟开始时间分别为第28天、第29天和第30天。则工作M的总时差为()天。
    A、7
    B、5
    C、6
    D、9

    正确答案:A;本题继续考察操作系统相关问题;
    解析
    总时差TF(Total Float )指一项工作在不影响总工期的前提下所具有的机动时间,即用最迟完成时间与最早完成时间之差,28-(16+5)=7 (总时差 = 最迟完成时间 - 最早完成时间)
    自由时差 = 紧后工作最早开始时间 - 本工作最早完工时间

    编程题(3道):
    1、小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的最大公约数.那么问题来了,在一系列的锻炼后,小易的最终能力值为多少?

    输入描述:

      对于每组数据,第一行是两个整数n(1≤n<100000)表示怪物的数量和a表示小易的初始能力值.
      第二行n个整数,b1,b2...bn(1≤bi≤n)表示每个怪物的防御力
    

    输出描述:

      对于每组数据,输出一行.每行仅包含一个整数,表示小易的最终能力值
    

    输入例子

      3 50
      50 105 200
      5 20
      30 20 15 40 100
    

    输出例子

      110
      205
    

    代码:
    https://github.com/ToryangChen/ImitateTest/blob/master/src/Game.java

    2、兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它R的敌人 (两点之间的距离为两点连续的距离,例如(3,0),(0,4)之间的距离是5),如果一个炮台能攻击 到敌人,那么就会对敌人造成1×的伤害.黑默丁格将三个炮台放在N*M方格中的点上,并且给出敌人 的坐标. 问:那么敌人受到伤害会是多大?

    输入描述:

      第一行9个整数,R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮台攻击的最大距离,
      (x1,y1),(x2,y2),(x3,y3)代表三个炮台的坐标.(x0,y0)代表敌人的坐标.
    

    输出描述:

      输出一行,这一行代表敌人承受的最大伤害,(如果每个炮台都不能攻击到敌人,输出0×)
    

    输入例子:

      1 1 1 2 2 3 3 1 2
    

    输出例子:

      2x
    

    代码:
    https://github.com/ToryangChen/ImitateTest/blob/master/src/Attach.java

    3、在NM的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(33)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇.问:兰博最多可以清理多少个蘑菇?

    输入描述:

      第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小;
      接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇.
      一个方格可以种无穷个蘑菇.
    

    输出描述:

      输出一行,在这一行输出一个整数,代表兰博最多可以清理多少个蘑菇.
    

    代码:
    https://github.com/ToryangChen/ImitateTest/blob/master/src/Mushroom.java

    下一篇:网易校招研发工程师模拟笔试题(二)

    相关文章

      网友评论

        本文标题:网易校招研发工程师模拟笔试题

        本文链接:https://www.haomeiwen.com/subject/kufklttx.html