1.ftp文件传输是基于什么协议的
UDP协议
2.一个C类网最多可以容纳多少台主机
254台
3.java虚拟机中的自动垃圾回收器并不能阻止程序运行溢出内存,假设一个程序保持创建一个引用时,其他任何引用都没有被抛弃,这样也会造成内存耗尽的结果。虽然垃圾回收机能在后台独立运行,但它并不是独立的平台,它具有平台依赖性。
4.如果对象的引用被置为null,;垃圾回收器是否会立即释放对象占用的内存?
不会,在下一个垃圾回调周期中,这个对象将是被可回收的。也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。一段程序可以建议垃圾回收执行,但是不能强迫它执行。
5.方法resume()负责恢复调用suspend()方法而停止的线程。
6.关于sleep和wait方法。
关于sleep()和wait(),以下描述错误的一项是:D
- A sleep是线程类(Thread)的方法,wait是Object类的方法;
- B sleep不释放对象锁,wait放弃对象锁
- C sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
- D wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
7.简述索引失效的几种情况
1.有or必全有索引;
2.复合索引未用左列字段;
3.like以%开头;
4.需要类型转换;
5.where中索引列有运算;
6.where中索引列使用了函数;
7.如果mysql觉得全表扫描更快时(数据少);
什么时候没必要用
1.唯一性差;
2.频繁更新的字段不用(更新索引消耗);
3.where中不用的字段;
4.索引使用<>时,效果一般;
8.rabbitMQ有几种工作模式
1、work模式-一个生产者,多个消费者,每个消费者获取到的消息唯一。
2、订阅模式-一个生产者发送的消息会被多个消费者获取。
生产者:可以将消息发送到队列或者是交换机。
消费者:只能从队列中获取消息。
3、路由模式
1、 发送消息到交换机并且要指定路由key
2、 消费者将队列绑定到交换机时需要指定路由key
4、通配符模式
将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。
5、RPC模式
在RabbitMQ中RPC的实现也是很简单高效的,现在我们的客户端、服务端都是消息发布者与消息接收者。
首先客户端通过RPC向服务端发出请求
我这里有一堆东西需要你给我处理一下,correlation_id:这是我的请求标识,erply_to:你处理完过后把结果返回到这个队列中。
服务端拿到了请求,开始处理并返回
correlation_id:这是你的请求标识 ,原封不动的给你。 这时候客户端用自己的correlation_id与服务端返回的id进行对比。是我的,就接收。
9.用递归实现‘vevor’字符串反转
public String reverse(String str){
if(str == null || str.length() <= 1){
return str;
}
return reverse(str.subString(1)) + str.charAt(0);
}
10.走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步、2步或者3步,问走完这100级台阶总共有多少种走法?
这个问题本质上是斐波那契数列,假设只有一个台阶,那么只有一种跳法,那就是一次跳一级,f(1)=1;如果有两个台阶,那么有两种跳法,第一种跳法是一次跳一级,第二种跳法是一次跳两级,f(2)=2。如果有大于2级的n级台阶,那么假如第一次跳一级台阶,剩下还有n-1级台阶,有f(n-1)种跳法,假如第一次条2级台阶,剩下n-2级台阶,有f(n-2)种跳法。这就表示f(n)=f(n-1)+f(n-2)。将上面的斐波那契数列代码稍微改一下就是本题的答案。我们来看一下代码的实现。
public class Test {
static final int s = 100; //自定义的台阶数
static int compute(int stair){
if ( stair <= 0){
return 0;
}
if (stair == 1){
return 1;
}
if (stair == 2){
return 2;
}
return compute(stair-1) + compute(stair-2);
}
public static void main(String args[]) {
System.out.println("共有" + compute(s) + "种走法");
}
}
11.编写一个 SQL 查询,查找所有至少连续出现三次的数字
select distinct l1.Num as ConsecutiveNums
from
Logs l1,
Logs l2,
Logs l3
where l1.Id = l2.Id-1
and l2.Id = l3.Id-1
and l1.Num=l2.Num
and l2.Num=l3.Num
12.编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
delete
p1
from
Person p1,
Person p2
where
(p1.email = p2.email) and (p1.id > p2.id)