0%

腾讯安卓客户端开发一面总结

面试涉及的内容主要有算法、操作系统、计算机网络和项目。

算法部分

  1. 搜索二维矩阵 lee4tcode

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

每行的元素从左到右升序排列。
每列的元素从上到下升序排列

  1. 环形链表 leetcode1leetcode2

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

理论部分

  1. 进程和线程分别是什么?

    进程是系统进行资源分配和调度的最小单位,线程是CPU分配和调度的基本单位。一个系统最少有一个进程。线程是比进程更细粒度的划分单位,一个进程至少有一个线程。同一个进程的多个线程之间共享一块内存,不同进程之间资源独立。同一个进程中的多个线程可以并发执行,提高系统运行效率。同一个进程内部的线程之间调度相比不同进程之间的调度开销要小。运行效率高。

  2. 系统间进程通信方式,具体介绍一下每一种方式?

    1. 管道:管道的实质是一个内核缓冲区,进程以先进先出的方式从管道中读取数据,另一端的进程只能顺序的读取数据。管道是半双工的,数据只能往一个方向流动。管道只能用于父子进程或者兄弟进程之间(有名管道可以克服这个问题)。管道单独构成一种独立的文件系统,只存在于内存中。管道的缓冲是有限的,缓冲满的时候需要等待。
    2. 信号:如终止、结束、退出、子进程退出信号等。
    3. 消息队列:RabbitMQ等
    4. 共享内存
    5. 信号量
    6. 套接字(Socket):网络,包含地址、端口、协议等
  3. TCP如何保证可靠传输数据?

    1. 三次握手,保证数据传输前两端建立连接
    2. 确认和重传机制:接受端收到报文会向发送端发送确认消息,发送端超过一定时间没有收到确认报文就会重新发送最后一次收到的确认消息之后的数据。
    3. 数据校验:TCP报文头有检验和,用于校验报文是否有损坏
    4. 数据合理分片和排序:TCP会按照最大传输单元(MTU)合理分片,接收方会缓存未按照顺序到达的数据,重新排序后交给应用层。
    5. 流量控制:接收方无法及时数据时能通过滑动窗口提示发送方减低发送速率,防止丢包。
    6. 拥塞控制:当网络拥塞时,通过拥塞窗口,减少数据的发送,防止丢包
  4. 如何优化TCP三次握手,提高效率?

项目部分

项目部分分别从个人在项目中的角色和项目可优化的角度来提问。

  1. 根据项目角色,介绍印象最深刻的问题,如何解决,在解决问题的过程中扮演的角色。
  2. 根据目前该项目的情况,介绍一下未来项目可以优化的内容。

介绍一下最近学习的内容

这里分享了一下最近做的论文内容。

请作者喝咖啡