一些零碎的知识点

1、Object类中都有哪些方法?

hashCode()、equals()、wait()、notify()、notifyAll()、finalize()方法

2、10亿数据怎么进行排序?

将大文件切割成小文件,每个小文件内归并排序;

对所有的小文件进行归并排序。

3、一个类何时会被卸载?

一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。

由Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。对于Java虚拟机类加载器,Java虚拟机本身会始终引用这些类加载器,而这些类加载器则会始终引用它们所加载的类的Class对象,因此这些Class对象始终是可触及的。

4、何时发生新生代和老年代垃圾回收?

大多数情况下,实例对象直接在 Eden 区中进行分配。如果 Eden区域没有足够的空间,那么就会发起一次 Minor GC;对于 Full GC(Major GC)的触发条件:也是如果老年代没有足够空间存放大对象和年龄较大的对象或者老年代分配担保失败,那么就会进行一次 Full GC。

 

Ps:上面所说的只是一般情况下,实际上,需要考虑一个空间分配担保的问题:

在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果大于则进行Minor GC,如果小于则看HandlePromotionFailure设置是否允许担保失败(不允许则直接Full GC)。如果允许(为true),那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于则尝试Minor GC(如果尝试失败也会触发Full GC),如果小于则进行Full GC。

5、Hash冲突的解决方法

(1)开放定址法

用开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。

(2)拉链法

拉链法解决冲突的做法是:将所有散列地址相同的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组T[0..m-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。

6、现在要测试系统的高并发性能,如何模拟高并发?

使用cyclicbarrier,cyclicbarrier初始化时规定一个数目,then计算调用了cyclicbarrier.await()进入等待的线程数,当等待的线程数达到初始化时规定的数目时,所有进入等待的线程将被唤醒并继续。

7、2012!末尾有几个0?

答:有多少对2*5就有多少个0,2的个数明显多于5,所有有多少个5就有多少个0。具体如下:

2012/5=402,  402/5=80, 80/5=16 ,  16/5=3

402+80+16+3=501

所以2012!的末尾共有501个0。

8、java中函数传方式?

 

(1)按值传递(by value)

    使用该方式传递的参数,参数原始的值不发生变化
    适用范围:八种基本数据类型和String
    *String也是传递的地址,但是String对象一旦被改变,就是生成新的对象

(2)按址传递(by address)

 

    使用该方式传递的参数,在方法内部修改参数的值时,参数原始的值发生改变
    适用范围:除String以外的所有复合数据类型,包括数组、类和接口

测试:

 

下面是测试:

public static void main(String[] args) {
        int a = 0;
        int b [] = {1,2,3};
        String c = "str";
        System.out.println("=====参数传递前====");
        System.out.println("int a = " + a);
        System.out.println("int b[] = " + b[0]);
        System.out.println("String c = " + c);

        //方法调用,参数传递
        change(a, b, c);

        System.out.println("=====参数传递后====");
        System.out.println("int a = " + a);
        System.out.println("int b[] = " + b[0]);
        System.out.println("String c = " + c);
    }

    public static void change(int i, int [] j, String k){
        i = i + 9;
        j[0] = j[0] + 9;
        k = "String";
    }

结果:

这里写图片描述

9、你知道哪些服务器?它们的区别是什么?

JBoss,Apache,weblogic,tomcat

Apache:全球应用最广泛的http服务器,只支持静态网页,比如asp、PHP等动态网页不支持。免费

Tomcat:应用广泛的web服务器,支持j2ee(是一套技术架构,java三大体系之一),支持servlet,jsp。免费

JBoss:开源(公开源代码,免费)的应用服务器。免费

weblogic:业界第一的app服务器,支持j2ee。

JBoss和WebLogic都含有Jsp和Servlet容器,也就可以做web容器。JBoss和WebLogic也包含EJB容器,是完整的J2EE应用服务器。

tomcat只能做jsp和servlet的容器。

10、int和Integer的区别

(1)Integer是int提供的封装类,而int是Java的基本数据类型;

(2)Integer默认值是null,而int默认值是0;

(3)声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;

(4)Integer是对象,用一个引用指向这个对象,而int是基本类型,直接存储数值。

 

11、数组和 ArrayList 的区别;

      (1)数组可以包含基本类型和对象类型,ArrayList 只能包含对象类型

      (2)数组大小固定,ArrayList 大小可以动态变化

      (3)ArrayList 提供了更多的特性(addAllremoveAll)。

 

12、关于Spring框架和SpringMVC的问题?

(1)Spring主要思想是什么,回答 IOC和AOP,怎么自己实现 AOP ?

              (考察 AOP 实现原理,主要是动态代理)

(2)SpringAOP用的哪一种代理(都有用到)

(3)spring bean 初始化过程

(4)spring bean 对象的生命周期

(5)讲讲 Spring 中 ApplicationContext 初始化过程。

(6)SpringMVC 的原理。

(7)SpringMVC处理请求的流程

(8)Spring的annotation如何实现

(9)Spring拦截器怎么使用,Controller是单例吗

 

13、tomcat集群怎么保证同步?

一共有两种方式。

(1)sticky模式(粘性会话模式)

同一个用户的访问请求都被派送到同一个tomcat上

好处:这样我们就无须在多台服务器之间实现session共享了。

坏处:可能会出现failureover问题,即一旦用户服务器挂掉,那么其session就会丢失。

(2)session复制模式

将一个tomcat上的session复制到其他tomcat上。

好处:解决failureover的问题。

坏处:复制session需要系统资源和网络的开销,尤其是web服务器多的时候和session中存储的数据量大的时候,这一点尤其明显。

 

14、页面置换算法,例如LRU?

15、http状态码?

16、概率题?

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值