LY笔试题

■redis中的zset数据类型,是怎么排序的?

是根据score进行排序的,默认是从小到大排序。

1、java中&和&&的区别?

*   在java的逻辑运算符中,有这么四类:&&(短路与),&,|,||(短路或)。
*   &&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。而&要对所有的条件都进行判断;
*   除此之外,&&只是逻辑运算符,而&除了是逻辑运算符之外,也是位运算符。
*   ||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。

2、List 可以转换为List吗?可以说明,不可以也说明

*   不可以
*   虽然String是Object的子类,但是List 与 List 并不是父子关系,所以不可以转换

*   (2).List属于泛型。

    Java的泛型实现是基于类型擦除的。换句话说,List与List由于类型擦除, 在编译后会映射到相同的List类型上,
    也就是运行时实际无法区分二者,不过在取用时,编译器会进行类型还原,从而变为原来的List与List。 
    也就是两者本质上是相同的东西,直接混用会影响类型还原的区分,因此二者不能直接转换。(List)实际是将类型模糊化,然后再具体化的过程。

3、git 的 fetch(下载) 和 git 的 merge(合并)?

①、git其实有好几个区,工作区(workspace)、暂存区(index)、本地仓库(local repository),当然还有远程仓库(remote repository)。

②、远程仓库为我们保存一份代码拷贝,如github,而工作区、暂存区和本地仓库都在本地,这就是为什么没有网络我们也照样使用git提交(commit)
代码更新,因为提交仅是提交到本地仓库, 待有网络之后可以再推送(push)到远程仓库。

*   git fetch是将远程仓库的更新获取到本地仓库,不影响其他区域。而git pull则是一次性将远程仓库的代码更新到工作区(同时也会更新本地仓库)

    简单的说git pull相当于git fetch后再做一个git merge

③、fetch同pull的区别在于:git fetch:是从远程获取最新版本到本地,不会自动merge ,而git pull是从远程获取最新版本并merge到本地仓库,
   从安全角度出发,git fetch比git pull更安全,因为我们可以先比较本地与远程的区别后,选择性的合并。 
   git push 默认推送到master,如果有多个分支,则多个分支一起推送到远程

4、session和cookie的区别?(衍生的问题是面试官会接着问如何理解跨域)

5、request.getAttribute() 和 request.getParameter() 有何区别?

  ①、首先request对象代表客户端的一次请求,可以用它来存储客户端请求的一些参数。

  ②、request.getParameter()方法可以获取请求参数,是客户端请求时,客户端发送给服务器的参数,这个赋值动作是有客户端完成的。它的返回值类型是字符串类型

  ③、request.getAttribute()方法用于获取request对象中的attribute值,这个值是之前在服务器端通过setAttribute(key ,value)放入到request对象中的,返回任意对象

6、restful 风格中put、post、delete、get分别指的是什么?

7、递归代码,一段字符串"1235324564"(类似的数字)用递归的方式输出里面"4"的个数

public static void main(String[] args) {
        total();
    }

    public static void total() {
        String num = "12353245644543522434232";
        //思想来自String的底层用char数组保存,所以,无需使用String数组
        char chars[] = num.toCharArray();
        System.out.println(calc(chars, 0, chars.length, 0));
    }

    private static int calc(char[] chars, int start, int end, int sum) {
        if (end == start) {
            return sum;
        }
        char c = '4';
        if (c == chars[start]) {
            sum++;
        }
        return calc(chars, ++start, end, sum);
    }

8、long和Long哪个线程安全的

long和double是一个基本类型,只有被用在多线程数据共享时才会出现线程安全的问题。如果不共享,就不会线程不安全。

其次,基本类型本身就是内存值的直接拷贝,多线程共享情况下,如果没有保护机制,数据的读写是不可控的,线程读写时的实际值和预想值存在差异。所以是不安全的。

你可能感兴趣的:(LY笔试题)