2021.07.22 百度提前批测开一面

1.算法题

1. 按照升序排列的数组在预先未知的某个点上进行了旋转(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2]),请找出其中最小的元素,

        二分法
2. 如果给你一个乱序数组 【 7,1,3,5,4】,找出从小到大排列的第K个数

        快速选择排序

2.数据库

数据库中两张表tab1、tab2,tab1中有字段:id、name,tab2中有字段:id、score、class,两张表以id字段作为外键关联,用一个sql语句找到名字为“李三”的人对应的班级和分数?、

1. select t2.class,t2.score from tb1 t1 join tb2 t2 on t1.id = t2.id and t1.name = '李三';

2. select class,score from tb2 where id = (select id from tb1 where name = '李三');

3.接口和抽象类

抽象类:
        1.有构造方法,用于继承它的子类去初始化
        2.成员变量:可以是变量,也可以是常量
        3.成员方法:可以是抽象的,也可以有方法体
        4.抽象类是对根源的抽象
    接口:
        1.没有构造方法
        2.成员变量:只能是常量,默认修饰符是 public static final
        3.成员方法:jdk7默认是抽象的,不可以有方法体。jdk8可以有方法体,用static或者default关键字标识
        4.接口是对动作的抽象
    一个类只能继承一个抽象类,但是可以实现多个接口

4.static关键字

static修饰方法:静态方法,可以不依赖于对象就可以直接访问
    static修饰变量:静态变量,静态变量被所有对象共享,在内存副本中只有一个,它当且仅当在类第一次加载时会被初始化。而非静态变量是对象所有拥有的,在创建对象的时候被初始化,存在多个副
    static代码块:静态代码块,静态代码块以优化程序性能,类中只能有一个static代码块,它只会在类加载的时候执行一次
    static修饰类:静态内部类,单例模式常用

5.说说单例模式

1.单例类只能有一个实例
    2.单例类必须级创建自己的唯一实例
    3.单例类必须给其他对象提供这一实例
    
    什么时候使用单例模式?
        缓存对象,日志对象,系统中出现一次的对象都是单例

6. gc,垃圾回收器都说一下

7.字典有了解吗?,我说了hashmap,然后就问怎么遍历hashmap中所有的key,遍历所有的value

8.linux怎么找txt文件中包含 a 和 b 的行?

cat test.txt | grep a | grep b

9.linux怎么判断进程是否存活?

pidof 进程名 

kill -0 pid(查看进行是否存在,存在返回1,不存在返回0)
获取进程数量:ps -C 进程名 | wc -l

10.进程和线程的区别,什么时候用多线程,什么时候用多进程

进程:一个在内存中运行的应用程序,每个进程都有自己独立的内存空间,一个进程可以有多个线程,是资源分配的基本单位
线程:进程中的一个执行任务,一个进程至少有一个线程,多个线程共享该进程中的内存空间,线程是任务调度和执行的基本单位
    
 多进程和多线程的区别:
        多进程:操作系统中同时运行的多个程序
        多线程:在同一个进程中同时运行多个任务

11.输入wwww.baidu.com 发生什么?

根据域名解析出ip,可以在浏览器缓存和本地host文件中找对应关系,如果没有就去远程DNS服务器找,拿到IP之后,发送http请求,进行tcp连接,传输数据,页面解析并且渲染数据,关闭连接。

12.tcp  三次握手,四次挥手

追问三次握手有什么缺点?
        会发生 SYN Flood 攻击,就是DDos攻击。
        通过向网络服务所在端口发送 大量 的伪造源地址的攻击报文,就可以将服务器的连接队列占满,从而阻止其他正常用户的访问,它的数据包特征通常 是,源发送了大量的SYN包,并且缺少三次握手的最后一步握手ACK回复。
           
        原理:攻击者首先伪造地址对 服务器发起SYN请求,服务器回应(SYN+ACK)包,而真实的IP会认为,我没有发送请求,不作回应。
        服务 器没有收到回应,这样的话,服务器不知 道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries)。
        这样的话,对于服务器的内存,带宽都有很大的消耗。攻击者 如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难。

13.tcp怎么保证可靠性  滑动窗口、拥塞控制什么的 都说了说。

1.确认应答系列号:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。 这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。
        序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。
2.超时重传:在tcp传输过程中,回复的ACK报文丢失了
        导致原因:
            1.数据在传输过程中由于网络原因等直接全体丢包,接收方根本没有接收到。
            2.接收方接收到了响应的数据,但是发送的ACK报文响应却由于网络原因丢包了。
        在没有接受到ack回复后,发送方会再次发生刚才的数据,如果是原因1,服务端接收到数据后正常回复ACK,如果是原因2,服务端接收到数据后发现数据存在(通过系列号),那么直接丢弃,回复ACK
    3.连接管理:三次握手,四次挥手,保证可靠的连接和可靠的关闭
    4.流量控制:避免发送方发数据太快,接收方来不及处理,通过一个滑动窗口机制,假如这次发送 0 - 1000,ack回复一个1001,下次就从1001开始发送
    5.拥塞控制:
        慢启动机制:输出的拥塞窗口是1,每经过一个正常的发送窗口大小变为2倍。
        拥塞避免: 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1
        快重传:丢失数据后,客户端连续收到三次相同的ack,会启动快重传

14.怎么测试一个纸杯

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值