腾讯技术面试题

  1. 实现乘法运算(不能用乘、除、取余操作),假设a*b
    每次b向右移一位,a向左移一位
    如果b的此位为1,则结果ans相应的加上a。
    直到b为0, 结束迭代。
int Multi(int a, int b){
     int result = 0;
     while(b){
          if(b&1)
            result += a;
         a = a << 1;
         b = b >> 1;
     }
     return result;
}
  1. 按键“K”,在屏幕上显示经过了哪些操作?(计算机组成原理)

    1. 键盘下有“光线”,如果没有任何按键时,光线可以到达键盘所有位置。当按下某一键时,光线被挡住,扫描会发现该信号,即扫描码;
      http://blog.csdn.net/bingjing12345/article/details/7830710
    2. 将扫描码存放到缓存区, 产生中断;
    3. 识别键盘中断,将cpu的中断寄存器的特定位置置为1;
    4. cpu处理完一条指令后,发现有中断,识别中断分配给对应的键盘处理程序;
    5. 键盘处理程序到缓冲区取出扫描码,然后转化为相应的ASCII码;
    6. 将ASCII转为为一个光点矩阵,作为显示屏的输入信号,在屏幕中显示。
  2. BIOS启动过程(扩展于第二题)
    http://www.cnblogs.com/Braveliu/p/3305975.html

    1. 按下开机键,电源会向主板和其他设备供电;
    2. CPU电压不稳定,初始化,直至电压稳定;
    3. POST(Power on self test 加电检测), 检测系统中关键设备是否正常,如内存、显卡;
    4. 查找显卡,显示显卡信息;查找其他的BIOS;查找并显示系统的BIOS信息;检测查找CPU的信息;
    5. 检测硬件设备,如硬盘、串口等等;
    6. 检测即插即用的设备(如U盘),为这些设备分配中断、IO等资源;
    7. 显示系统配置列表;
    8. 更新ESCD(Extended System Configuration Data,扩展系统配置数据)
    9. 根据用户指定的启动顺序从软盘、硬盘或光驱启动。(如C盘的IO.SYS)
  3. 怎样检测TCP的610端口是否打开?

    ps aus| grep tcp
    ps aux | grep 610
    netstat -tlp | grep 610
    netstat -aon | grep 610
    telnet 该主机ip 610 是否可以连接
    如果是windows,可以查看任务管理器,PID中是否有610端口,且是否为tcp服务
    向该主机的610端口请求tcp连接,看是是否有回应
    编程建立tcp服务,且端口号设为610,看是否会报端口占用的错误

  4. TCP为什么三次握手、四次分手?(计算机网络)

    • TCP不两次握手的原因: 防止死锁,防止等待浪费资源。A向B发送连接请求,B收到后发送回应,但是如果B发送回应,但是该回应丢失,则A一直在等待B的回应,而忽略B发送的数据,而B则认为A已经成功收到B发送的回应而给A发送数据,而这些数据又被A忽略,B认为A没有收到数据,所以认为数据丢失一直给A发送同样的数据,形成死锁。
    • TCP不四次握手的原因是:三次握手已经可以确定通信双方都处于ready状态,则无需再进行额外的四次确认。
    • TCP四次分手的原因:TCP是全双工模式,A发送中断,只能表明A已经没有数据向B发送,但是B可能还有数据要向A发送。为了使数据完整发送,所以四次分手。(和面试时候说的差不多,其他的原因真想不出来了)
  5. A、B数组中,每个数组中存放数据不同,是否A经过一次变化(增加序列、删除序列、交换序列)变成B序列。

    思路: 关键点,找到需要改变的片段开始和结尾位置。

    • 求A、B数组长度,lena,lenb;
    • 如果lena == lenb(则说明,可能交换某两段数据可以实现A转化为B),思路即为面试时的思路,如果不符合,则返回false,反之true;
    • 如果lena < lenb (则说明,可能A + 某片段 = B),思路即为面试时的思路,如果不符合,则返回false,反之true;
    • 如果lena > lenb (则说明,可能B + 某片段 = A),思路同上。
  6. 线程和进程的应用场景
    http://www.mamicode.com/info-detail-252716.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值