• 字节跳动面试题+答案,答对了30+


    1、变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?

    A.1
    B.-1
    C.263+262+…+22+21+2^0
    D.–(263+262+…+22+21+2^0)

    2、TCP建立连接的三次握手中,第二次握手发送的包会包含的标记,最正确的描述是?

    A.ACK
    B.SYN,ACK
    C.SYN,PSH
    D.SYN

    3、栈是先进后出的数据结构。给定一个大小为3的初始状态为空的栈,已知一组数据经过这个栈后,最终的数据顺序依次为:1 3 2 4 ,问原始的进栈数据不可能是以下的那组?

    A.2 3 1 4
    B.1 4 2 3
    C.4 2 3 1
    D.3 1 2 4

    4、电路中其中三个门电路非门,与门,或门的示意图及性质分别如下所示:
    非门,使输入的电平编程相反电平:
     
    与门,使输入两个高电平,输出高电平,其他情况下输出低电平:
     
    或门。当且仅当输入两个低电平时,输出低电平,否则输出高电平:
     
    现在对以下的电路中的 A 和 B 引脚分别持续输入一个高电平( 1 )和一个低电平( 0 ),问最终电路的引脚 C 、 D 、 E 、 F 分别输出的电平是什么?
     
    A.C=0,D=1,E=0,F=1
    B.C=1,D=1,E=1,F=0
    C.C=1,D=1,E=0,F=1
    D.C=0,D=0,E=0,F=1

    5、操作系统中可以使用LRU(least recently used)内存淘汰旧数据的策略,如果内存需要加载新数据但空间又不足,则会按照最近访问时间进行排序,并将最老的数据淘汰,假设现在内存空间大小为5,原本内存中没有数据,对内存中数据的访问顺序如下:1,2,5,3,4,6,1,4,3,6,7,8,3,9

    A.缺页次数:9
    B.缺页次数:4
    C.缺页次数:10
    D.缺页次数:5

    6、下面的程序中, int32-t 表示一个有符号的 32 位整数,程序的入口是 main 函数,问最终 res 的结果是多少?
     
    A.–(231+230+…+22+21+2^0)
    B.0
    C.-1
    D.程序会死循环

    7、给定一个如下所示的图,图中的边代表了两个节点间的距离。如果使用迪杰斯特拉算法对节点 1 和节点 8 求最短路径,则当完成计算时,算得节点1 到节点 8 的最短路径是?同时当完成节点 1 到节点 8 的最短路径计算时,节点 1 到哪些节点(除了 1 和 8 )的最短路径也已经计算完毕?( )

    8、x86 CPU在实模式下解释代码时看到一个地址为2330H:5041H,请问它最终在内存中要找的地址是多少?

    A.28341H
    B.5374H
    C.52740H
    D.7371H

    9、有三个程序J1,J2,J3。程序在单核CPU执行时,三个程序需要的资源如下所示:
     
    优先级高的程序可以抢占优先级低的程序的CPU,但不能抢占IO。问当所有任务执行完毕时,共消耗的时间是?

    A.170ms
    B.160ms
    C.120ms
    D.130ms

    答案仅供参考

    1、答案解析:正确答案: B  
    (1)a+b的16进制表示为:OxFFFFFFFFFFFFFFF(16位F),转为2进制为111……111(64位1,每个F->4位2)。
    (2)有符号数:是针对二进制来讲的。用最高位作为符号位,“0”代表“+”,“1”代表“-”。所以a+b的结果是一个负数。
    (3)计算机中负数是以补码的形式保存的,将补码转换成原码的计算方式如下:
            ①. 对于正数,原码与补码相同。
            ②.对于负数,将补码除符号位之外,按位取反,末位加1,即得到原码。
    (4)a + b = 111……111(64位1)
              取反:100……000(1位1,后面63位0)
              加一:

      10进制:-1。

    2、答案解析:正确答案: B

    3、答案解析:正确答案: C
    注意栈的大小为3

    4、答案解析:正确答案: D

    5、答案解析:正确答案: C  
    内存空间5,所以前5个都是缺页的,因为内存空间中并没有这五个,然后6置换1,1置换2,然后4.3.6都有不用置换,7置换5,8置换4,3有了,然后9置换3,总共十次。

    6、答案解析:正确答案: D
    以char为例
    f(1,0): 
            a=2  b=-1 
            a=3  b=-2 
            … 
            a=127 b=-126 
            a=128 b=-127  溢出–>a=-128 b=-127     char范围:-128~127        
     return a+b:-128-127实际上是1(char范围),继续循环

    而原例为int_32t,临界情况 a+b:      -232+(-232+1)=1,也继续循环。

    因此死循环。

    7、答案解析:正确答案: C
    初始状态:路径长度0:(1)
    路径长度1:(1,5)
    路径长度2:(1,3)
    路径长度3:(1,3,4),(1,2)
    路径长度4:(1,5,8)
    节点1到8的最短路径长度为4;    2,3,4,5节点的最短路径已经计算完毕;  其中到5节点的最短路径最小为1;

    应该选C,感觉出题人玩文字游戏把自己绕进去了

    8、答案解析:正确答案: A
    实模式下内存空间的访问
    8086处理器(CPU)内的寄存器都是16位的,地址线上的地址由CPU提供。CPU用两个16位的值合成一个20位的值:将一个16位的值乘以16(相当于这个16位的值保存在20位寄存器的低16位中,然后将低16位往高位移动了4位)再加上另一个16位的值。将这个由2个16位合成的值提供给20根地址线作为访问内存的地址值。被乘以16的那个值被称为段基址,没有被乘以16的那个值被称为偏移地址。

    CPU在实模式下,段寄存器中的值就是段基址,如果想要通过汇编程序访问某个内存单元,那么就需要指定一个段寄存器和一个偏移地址或以“段基址值:偏移地址值”的格式。CPU会将段寄存器的值乘以16再与偏移地址相加后,才将这个结果提供给地址线;用段基址和偏移地址的形式给出的表达式,CPU也会给段基址乘以16与偏移地址相加后,才将这个结果提供给地址线。

    Figure 2. 实模式下访问内存(得出内存地址)的方式
    这就是说,在汇编程序中,得用段基址:偏移地址的方式访问内存,因为CPU形成内存地址的方式是“段基址* 16 + 偏移地址”。
    按照“段:偏移地址”的方式访问内存是CPU对内存的一种管理方式

    9、答案解析:正确答案: D
    因为优先级高的程序可以抢占优先级低的程序的CPU,但不能抢占IO,
    所以J1在CPU之后不能抢占J2的IO,J2在IO之后可以抢占J3的CPU。

    CPU:J1 40ms + J3 10ms + J2 20ms +J1 20ms
    IO:J2 50ms + J1 60ms + J3 20ms

    所以共消耗时间为130ms,选D。

  • 相关阅读:
    ASP.NET 高级编程基础第七篇—开发原则2
    反垃圾邮件引发的Email格式变异!
    .NET框架程序设计生成,打包,部署及管理应用程序与类型(2:Assembly的生成以及版本信息)
    .NET框架程序设计NET框架开发平台的体系架构概览(FCL,CTS,CLS)
    .NET框架程序设计生成,打包,部署及管理应用程序与类型(1:程序集的PE格式)
    [电影]蝴蝶效应
    .NET框架程序设计.NET框架开发平台的体系架构概览(.NET程序本质)
    [转贴]浅析.NET Framework对PE文件格式的扩展
    [MSDN今日讲座]Whidbey 开发系列讲座二:Visual Studio 2005团对开发系统简介
    郁闷!我的Gmail邮箱的问题!
  • 原文地址:https://www.cnblogs.com/momenglin/p/11878532.html
Copyright © 2020-2023  润新知