2020年北京某企Java校招真题

片尾有彩蛋!

用过linux都没问题吧

常用的:apt-get install 、 rm 、 cd、clear 、exit等

 

三次握手:A是客户端,B是服务器端

1、A向B发送SYN报文,请求连接

2、B收到SYN,向A发送ACK和SYN,同意连接请求

3、A收到SYN和ACK,向B发送ACK,连接成功

至此、三次握手完成

四次挥手:

1、A向B发送释放连接请求FIN报文

2、B收到释放连接请求报文,回复ACK,这个时候还没有关闭哦,只是半关闭的状态

3、B向A发送连接释放报文,被动关闭

4、A向B回复ACK,B收到ACK后,进入关闭状态,A在经过2MSL时间后也进入关闭状态!

至此,四次挥手完成

这里可以参考这篇博客: 传送门

视频讲解:传送门

这道题,PTA的原题啊!可以参考我的这篇博客:传送门

用Java的写的话,可以用split来分隔一下,存到数组里面,然后从后面输出就行拉

 

 忘的一干二净的SQL

 接口:接口是抽象方法的集合,接口只是一种形式,而接口自身不能做任何事情。接口是完全抽象的

抽象类:有默认的实现方法,可以用extends来继承

 HashMap ==>哈希 、 TreeMap ==> 红黑树(当时还写成了哈希)  、 Set ==> 黑红树 , 还有Vector 、List 、ArrayList等等

 这题跳过吧,咋也不会

 用Java写的话,实现四个之后最好用接口封装起来,这才是最完整的,但是你不封装也不打紧。

struct node{
    int num[Max];// Max 为栈的容量 
    int _top;
}; 
void pop(node S){
    if(S._top == 0)///栈空
        ERROR;
    else
        S._top--;
}
void push(node S , int a){
    if(S._top == Max)/// 栈满
        ERROR;
    else
        S.num[++S._top] = a ;
}
int top(node S){
    if(S._top == 0)
        ERROR;
    else
        return S.num[S._top];
}
int size(node S){
    return S._top;
}
main()
{
    node S;
    S._top = 0;
    push(S,2);
    top(S);
    size(S);
    pop(S);
}

 这个是要求复杂度为O(n)的,就是把数组遍历一遍!

int solve(vector<int> &arr){
    set<int> S;
    int Min = 1;
    for(int i = 0 ; i < arr.size() ; i++){
        if(arr[i] > 0)
            S.insert(arr[i]);
    }
    for(auto it = S.begin() ; it!=S.end() ; it++){
        if(*it != Min)
            return Min;
        else
            Min++;
    }
    return Min;
}

我这种写法不太好:

看看这篇大佬的博客:传送门

 面Java的岗,写着C++的代码,没有人像我一样吧!

更新:发现出题人博客,传送门

原文地址:https://www.cnblogs.com/Li-ningning/p/14091530.html