zoukankan      html  css  js  c++  java
  • 面试题目总结三

    一:背景

           最近在南京同学那,待了两周左右,为了找份养活自己的工作,不停地刷面试题,投简历,去公司面试,经历了前前后后大概有9-10次面试,一般都是先笔试,再面试,最后公司主管面试,有项目外包公司也有人力外包的公司,遇见了很多人和事,内心多多少少有各种感受,写这篇博客的主要目的总结一下遇到的面试题,包括笔试和技术面试官提问的题目,有很多题目是面试官重复几次面试到的,也有一些遇到自己不会的,或者回答的不是全面的,这边总结记录一下,便于以后自己在空余的时间,针对自己不懂的知识点或者掌握不牢的知识点加强学习,同时也为了与自己相同水平的同学共勉,(内容很多都是java基础的,或者其他简单的知识,也有一些自己平时不太关注的知识点)。

    二:面试题

      java基础:

    (1) 抽象类和接口的区别?

             a.类是单继承,接口是多实现

             b.抽象类中有构造方法,而接口中没有构造方法

             c.抽象类中既可以有抽象方法,也可以有非抽象方法;而接口中只有抽象方法

             d.抽象类中有成员变量,接口中只有常量

    (2)静态变量和实例变量的区别

              静态变量:static关键字修饰的变量,也称为类变量,属于类,不属于任何对象,静态变量在内存中有且仅有一个拷贝;

              实例变量:依存于某个实例,需要先创建对象,然后通过对象才能访问到它,静态变量可以让多个对象共享内存。

    (3)值传递和引用传递

    值传递:在方法调用时,实参传递给形参,相当于将实参的值复制一份到调用的函数中,若在函数中对形参的值进行修改,不会影响实参的值。

    引用传递:引用传递是将对象的地址传递过去,方法执行过程中,形参和实参的内容相同,指向同一块堆内存的地址,若改变堆内存的源数据,会影响到原对象。

     例子

    public class test4 {
    public static void main(String[] args) {
    String str="hello";
    char[] ch={'a','b'};
    System.out.println(str);
    System.out.println(ch);
    change(str,ch);
    System.out.println("-----------");
    System.out.println(str);
    System.out.println(ch);
    }
    public static void change(String str1,char[] ch1){
    str1="hi";
    ch1[0]='c';
    }
    }

    结果

     内存分配

    对象初始化内存

    执行change()方法:

    (4)ArrayList和LinkedList的区别,及Vector

       a. 底层数据结构: ArrayList和Vector是基于数组实现的,LinkedList基于循环双向链表实现的。

       b. 插入删除元素的区别:ArrayList在指定i位置插入元素时(add(int index,E element)),集合中第i和第i个之后的元素都要向后移动一位操作,时间复杂度为O(n-i)

    LinkedList基于链表实现的,插入,删除元素时时间复杂度不受元素位置的影响,近视O(1)

      c.线程安全:ArrayList和LinkedList是线程不安全的,Vector是线程安全的。

      (5) 字符流转字节流

          字符流输入流转字节输入流通过InputStreamReader实现,该类的构造器函数可以传入InputStream对象

          字节输出流转字符输出流通过OutputStreamWriter实现,改类的构造函数可以传入OutputStream对象

    (6)String、StringBuffer、StringBuilder的区别

            a.可变不可变

               String:是final修饰的,不可变的,若修改从新生成新的字符串对象

               StringBuffer和StringBuilder:是可变的,每次操作都会对StringBuffer对象本身进行修改,不生成新的对象

            b.线程是否安全

               String:线程安全的

               StringBuffer:线程安全的,相对于StringBuilder在调用方法上加(synchronized同步锁),执行效率慢

               StringBuilder:线程不安全的,如果程序不是多线程的,那么使用StringBuilder的效率高于StringBuffer

      数据库 mysql:

      (1) union和union all的区别

           union去掉重复的数据

           union all查询所有数据,不去掉重复数据

    (2)where 、group by、having的顺序

             where  group by  having

             where条件过滤原始数据

             然后用group by  having对数据进行分组加条件,聚合函数可以加在having后面,不可以加在where中

      框架方面:

    (1)springMVC的请求过程

     

    (2)

    ps:在完善中。。。。。

  • 相关阅读:
    C#关于MSMQ通过HTTP远程发送专有队列消息的问题
    ASP.NET中进行消息处理(MSMQ) 三
    ASP.NET中进行消息处理(MSMQ) 二
    ASP.NET中进行消息处理(MSMQ) 一
    日志插件 log4net 的使用
    在64位windows下使用instsrv.exe和srvany.exe创建windows服务
    Windows下MemCache多端口安装配置
    把页面上DIV元素生成图片
    memcached协议
    没钱买珍珠首饰,能够画一个
  • 原文地址:https://www.cnblogs.com/shuaifing/p/11938457.html
Copyright © 2011-2022 走看看