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.怎么测试一个纸杯
|