Java面试题
Yisnow.
这个作者很懒,什么都没留下…
展开
-
随机打乱数组顺序代码测试
给定一个数组,需要打乱其顺序,保证每个元素在任意位置出现的概率相等? 对于A[i],i=0,1,2,…N,随机在数组A[i,i+1,…N]中挑选一个数字交换到A[i]。 证明算法随机,只需证明每个数字分配到每个位置的概率是相等的。 易得,数组0-N位置的任意一个数字到位置0的概率都是1/n; 到位置1的概率是(1-1/n)*(1/(n-1))=1/n 解释:P(到位置1)=P(第一次调用随机算法的时候没交换到位置0)P(第二次到位置1|第一次调用随机算法的时候没交换到位置0)到位置2的概率是(1-1/n)原创 2020-09-20 10:56:28 · 509 阅读 · 0 评论 -
Java面试4
1、垃圾回收是在什么时候开始?对什么东西,做了什么事情? 内存区得堆空间划分成年轻代和老年代,非堆空间叫做元空间。年轻代又划分成Eden S0 S1区。产生对象时会先放在Eden区,若Eden区域满则会触发MinorGC对Eden和Survivor进行垃圾回收。剩下的对象会放到TO区。这时要是有对象得生命周期已达阈值会放到老年代。一些大的对象也会分配在老年代。 若是老年代内存也不够就会触发MajorGC对老年代进行回收,若回收后还是不够会尝试放到元空间,若空间不够会FULL GC,回收后不够的话OOM。 垃原创 2020-07-30 13:53:59 · 204 阅读 · 0 评论 -
Java面试3-多线程
1、线程的几种状态 new:新建一个对象 可运行runnable:start使得线程位于可运行线程池中,等待被调度 运行running:runnable的线程获得了时间片 阻塞block: 等待阻塞:running线程执行wait,JVM把线程放进等待队列 同步阻塞:running在获取对象同步锁时,同步锁被其他线程占用,JVM把该线程放进锁池 其他阻塞:running执行sleep、join、发出IO请求 死亡dead:run执行结束/main结束/因异常退出run/线程结束生命周期 2、死锁以原创 2020-07-28 11:10:49 · 122 阅读 · 0 评论 -
Java面试题2
1、JDBC访问数据库的基本步骤是? 加载数据库驱动到JVM 建立数据库连接 创建数据库操作对象 定义SQL语句 执行数据库操作 获取结果集 关闭 2、PreparedStatement和Statement 1,效率:预编译会话比普通会话对象,数据库系统不会对相同的sql语句不会再次编译 2,安全性:可以有效的避免sql注入攻击!sql注入攻击就是从客户端输入一些非法的特殊字符,而使服务器端在构造sql语句的时候仍然能够正确构造,从而收集程序和服务器的信息和数据。 用户在进行登录时,需要验证用户名和密原创 2020-07-28 09:47:09 · 181 阅读 · 0 评论 -
Java面试题整理1
#参考自:https://zhuanlan.zhihu.com/p/97590922 1、静态变量和实例变量的区别 实例变量是某个对象的属性,必须创建对象也可以被分配空间. 静态变量属于类又叫做类变量,程序加载字节码之后在链接阶段的准备阶段会给静态变量分配空间,并对其进行零值初始化,在初始化阶段会根据用户的赋值进行初始化。 2、 switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 在switch(e)中,e只能是一个整数表达式或者枚举常量(更大字体),整数表达式原创 2020-07-27 10:01:57 · 242 阅读 · 0 评论