Android面试经验程序员天下笔试&&面试经验

头条-阿里面试题

2019-04-22  本文已影响2人  yang_zcybb
  1. TCP三次握手
    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.
    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
    SYN:同步序列编号(Synchronize Sequence Numbers)
    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.


    image.png
  2. TCP和UDP

TCP UDP
是否连接 面向连接 面向连接
传输可靠性 可靠 不可靠
数据格式 字节流 报文
速度
数据顺序 保证数据是顺序的 不保证
连接双方数量 一对一(点对点) 一对一、多对一、一对多、多对多
TCP提供可靠的服务,传送的数据,无差错,不丢失,不重复,且按序到达 UDP尽最大努力交付,即不保证可靠交付
  1. HTTP协议
    HTTP协议是超文本传输协议,HTTP是基于TCP/IP通信协议来传递数据。
    HTTP中的方法:
  1. 打印数组
    题目:给一个M*N的数组,要求从左下角开始逆时针打印数组。
    思路:以一圈为一个循环单元,传入的参数是左下角坐标和右上角坐标(这样就可以把一个圈给确定了),圈是按照剥洋葱的方法一圈一圈递减,终止的条件是:
    左下角的横坐标<右上角的横坐标 || 左下角的纵坐标 <右上角的纵坐标
import numpy as np

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

def printMatrix(arrays):
    m = arrays.shape[0]
    n = arrays.shape[1]
    #初始化左下角和右上角
    ld = Point(m-1, 0)  #这是坐下角
    ru = Point(0, n-1)  #这是坐下角

    while ld.x >= ru.x and ld.y <= ru.y:
        subprint(arrays, ld, ru)
        ld = Point(ld.x-1, ld.y+1)
        ru = Point(ru.x+1, ru.y-1)

def subprint(arrays, ld, ru):
    # 要注意下面每一行打印的头和尾,不要将顶点重复打印了
    m = arrays.shape[0]
    n = arrays.shape[1]
    #打印最下一行
    for i in range(ld.y, ru.y):
        print(arrays[ld.x][i], end=' ')
    # 打印最右一行
    for i in range(ru.x, ld.x):
        print(arrays[m-i-1][ru.y], end=' ')
    # 打印最上一行
    for i in range(ld.y, ru.y):
        print(arrays[ru.x][n-i-1], end=' ')
    # 打印最左一行
    for i in range(ru.x, ld.x):
        print(arrays[i][ld.y], end=' ')
    #空行换行
    print()

a = ((1,11,111,1111), (2,22,222,2222), (3,33,333,3333), (4,44,444,4444))
arrays = np.array(a)
print(a)
printMatrix(arrays)
  1. 数据库(https://www.cnblogs.com/fjdingsd/p/5273008.html
上一篇下一篇

猜你喜欢

热点阅读