美文网首页
LY笔试题

LY笔试题

作者: 紫雨杰 | 来源:发表于2018-07-31 22:34 被阅读0次

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

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

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

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

    2、List<String> 可以转换为List<Object>吗?可以说明,不可以也说明

    *   不可以
    *   虽然String是Object的子类,但是List<String> 与 List<Object> 并不是父子关系,所以不可以转换
    
    *   (2).List<T>属于泛型。
    
        Java的泛型实现是基于类型擦除的。换句话说,List<String>与List<Object>由于类型擦除, 在编译后会映射到相同的List类型上,
        也就是运行时实际无法区分二者,不过在取用时,编译器会进行类型还原,从而变为原来的List<String>与List<Object>。 
        也就是两者本质上是相同的东西,直接混用会影响类型还原的区分,因此二者不能直接转换。(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笔试题

          本文链接:https://www.haomeiwen.com/subject/tnoqrftx.html