面试中的问题

2020-03-23   94 次阅读


fastdfs上传下载流程:

上传:

客户端client访问tracker服务器,tracker会找一台能用的 storage服务器,
tracker返回一台能用的strong服务器,ip与端口号
client直接与storage建立连接 并上传文件 返回生产文件的ID,文件上传结束

下载:

客户端client访问tracker下载文件的storage,参数为文件标识
tracker返回一台可用的storage
client直接与storage建立连接 完成下载

tracker在这里的作用是什么?
调度

Arraylist与Linkedlist区别:

Arraylist底层是动态数组

Linkedlist底层是动态数组

Arraylist增删快 Linkedlist增删慢,需要移动下标

hashmap、hashtable,treemap的区别

hashmap,无序,线程不安全

hashtable无序,线程安全

treemap 有序,线程不安全

redis中五种数据类型:

String List set zset hash

redis中list删除并获取最后一个元素的指令?
BRpop

写一个项目注册功能,应该注意的是什么:

防止Sql注入

商品下单实现思路,拍下减库存还是付款减库存:

拍下即减库存,否则会出现商品不足。

拍下未付款的订单应该如何处理:

设置cookie超时时间,利用事务回滚

mybatis中#{}与${}的区别:

#{}相当于PreparedStatement,预编译处理,有效防止SQl注入。mybatis在处理#{}时,会将#{}替换为?号,然后调用Preparedstatement中的set方法来赋值

${}是把${}替换成变量的值。

mybatis中java文件名与mapper文件为什么要保持一致:

如果mapper标签下以package包扫描形式时,需要保持一致。

包扫描形式时,实体类+mapper接口通过动态代理调用方法

调用方法时,会寻找其对应的映射配置文件

当多个mapper接口和mapper.xml同时存在,如果没有相同名称,则动态代理就不能通过其一一对应的的依赖配置文件,创建其相应的实现方法

mybatis中接口为什么没有实现类

底层使用动态代理,涉及到了反射+动态代理+工厂模式

简述一下对dubbo的认识:

远程调用RPC服务

写一个冒泡排序算法:

    public static void main(String[] args) {
        int[] array = {89,21,78,0,32,-8};
        Maopao(array);
    }
    static void Maopao(int[] array){
        if(array == null && array.length = 0){
            System.out.println("数组为空");
			return;
        }
        for (int i = 0; i <array.length-1 ; i++) {
            for (int j = 0; j <array.length-i-1 ; j++) {
                if(array[j]>array[j+1]){
                    int xiaoshu = array[j];
                    array[j]=array[j+1];
                    array[j+1] =xiaoshu;
                }
            }
        }
	for(int a = 0; a<array.length; a++){
	System.out.println(array[a]);
	}
    }

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

如人饮水、冷暖自知