Java工程师面试题积累(2.0版)

来源:互联网 发布:淘宝生活用品沱茶代理 编辑:程序博客网 时间:2024/06/07 00:45

目录(?)[-]

  1. 如何判断一个数是2的幂
  2. 陷阱面试题
  3. Javascript 题目
  4. 二进制算法以及思维陷阱题
  5. Java数据范围
  6. Java面试题 如何在一个 interface 中 执行一些操作
  7. MySQL中UUID做主键如何变得有序呢
  8. 为什么JSON定义的标准中属性名需要用引号引起来呢像下面的name一样
  9. 关于JVM
  10. 面试题 Java 中 下面的这种用法有什么问题
  11. 关于List的instanceof 请说出123
  12. 1 怎么理解Spring
  13. 2 Spring 的AOP是使用什么方式实现的
  14. MySQL数据库的隔离界别
  15. Oracle 查询树形结构的关键字
  16. MySQL 可重复读场景
  17. MySQL 的 bin-log 的理解
  18. HTTPTCPUDP所处的层
  19. redismongoDBHBase的适用场景
  20. redis 的数据类型
  21. redis 的 过期时间 有什么用实现原理
  22. Linux 安装Oracle的JDK 配置文件放在何处
  23. 性能调优有哪些手段
  24. JVM怎么进行分析
  25. Dubbo
  26. MyBatis 的
  27. 项目案例担任角色
  28. HashMap 的实现原理
  29. ConcurrentHashMap 实现原理锁的粒度
  30. 写一段程序实现 冒泡排序
  31. Integer 的缓存 127 equals 问题
  32. AtomicXXX 的使用
  33. Lock 的各种实现类型消耗以及适用场景
  34. 具体调优案例及分析
  35. JVM 内存分区如何查看各个空间的大小
  36. GC的适用场景 G1 CMS各个内存区的回收算法
  37. 线程池
  38. 数据库方面SQL优化SQL注入越权索引等
  39. ThreadLocal 原理

上一篇文章位于这里: 面试题积累: http://blog.csdn.net/renfufei/article/details/8754239

因为太旧所以CSDN不让更新.其中 1-11 题是旧题目。

1. 如何判断一个数是2的幂。

个人认为,数字转化为二进制,符号位为0,余下部分有且只有最左边一位是1,其余位都是0,才是2的幂。 原理是 乘二则向左进一位。

2. 陷阱面试题:

在Java中,Throwable是一个接口还是抽象类?

3. Javascript 题目

<!DOCTYPE HTML>  <html>   <head>    <title>下面的代码输出什么,如何修正</title>    <script>      var myname = "xiaoming";      if(!!myage){          myname = "xiaozhang";      }      alert("myname="+myname);    </script>   </head>   <body>   </body>  </html>  

4. 二进制算法以及思维陷阱题

现有一千瓶药水,其中九百九十九瓶是完全一样的,

只有一瓶里面是毒药,但是外观上分辨不出来。

毒药如果给小白鼠喝一点,一星期后这只小白鼠会突然死亡,

但之前一点症状也没有。

现需要在一星期内找出哪瓶是毒药,问至少需要几只小白鼠?

5. Java数据范围

在Java中, 有一个数字,比如100亿,可以使用 int 来存储吗?

100亿 * 100亿呢,可以用什么类型来存储?

这样计算, int 类型是32位,4个字节,2的10次方是 1024,大约是1K,2^20 = 1M,约100万, 2^30= 1G,大约是10亿,所以整数只能存大约40亿个数字,正数22E个,所以 100亿可以使用long来存储,但不能使用 int 来存储。 

long 是64位,因为 32位存放不下100亿,所以64位也存放不下 100亿 * 100亿,只能使用特殊的类型啦,比如K神所说的 BigInteger,或者 BigDecimal来存放。

一个测试程序:

public class TestIntLong {      /**      * 请参考 int 存放100亿, long 存放100亿*100亿的情况      */      public static void main(String[] args) {          int num1 = 10 * 1000 * 1000 * 1000;          long num2 = 10L * 1000 * 1000 * 1000 * 10 * 1000 * 1000 * 1000;          long num3 = 10 * 1000 * 1000 * 1000 * 10 * 1000 * 1000 * 1000L;          long num4 = 10L * 1000L * 1000L * 1000L * 10L * 1000L * 1000L * 1000L;          //          System.out.println("num1="+ num1);//num1=1410065408          System.out.println("num2="+ num2);//num2=7766279631452241920          System.out.println("num3="+ num3);//num3=1569325056000          System.out.println("num4="+ num4);//num4=7766279631452241920      }  }  

6. Java面试题: 如何在一个 interface 中 执行一些操作

package com.test.test.java;  /**  * Java面试题: 如何在一个 interface 中 执行一些代码?  */  public interface TestInvocation {      public static final Runnable RUNNABLE           = new Runnable() {          @Override          public void run() {              System.out.println(                  "类似这样,利用类加载机制,当然,也可以是其他类的类型."              );          }      };   }  

另外,Java 8里面添加了默认方法,专门拿来干这种需求的.

7. MySQL中UUID做主键如何变得有序呢?

select concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() );  

返回的结果如下所示:

mysql> select concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() );  +----------------------------------------------------------------------+  | concat( date_format(current_timestamp, '%Y%m%d%H%i%s'),'-', UUID() ) |  +----------------------------------------------------------------------+  | 20140705202902-f280257a-043f-11e4-989a-00163e0202ca                  |  +----------------------------------------------------------------------+  1 row in set (0.00 sec)  

8.为什么JSON定义的标准中,属性名需要用引号引起来呢,像下面的name一样?

应该考虑到各种系统,各种关键字以及标识符的组成不同,而且会有Map等情况

9. 关于JVM

有个万(wu)能(lai) 的面试技巧,你可以问求职者,这个背后的思想是什么,你理解他的原理吗,为什么要这样实现,如果让你自己写,多长时间做一个基础版本出来?

GC 有哪几种,  每个JDK版本中有什么区别,  哪几种算法比较好,  适合什么情况,  其回收的思想是什么,  怎么实现的,  优缺点是什么、  你要如何调优。。。  

10. 面试题: Java 中, 下面的这种用法有什么问题?

Date nextMonth = new Date(new Date().getTime() + 30*24*60*60*1000);  

当然,这种用法是很不好的,加一个月应该使用的是 Calendar 类,Calendar是Java的标准工具类,在 java.util 包下面.

Date today = new Date();  Calendar cal = Calendar.getInstance();  cal.setTime(today);  cal.add(Calendar.MONTH, 1); // 加一个月  cal.add(Calendar.DATE, -1); // 减一天  //  Date nextM = cal.getTime();  System.out.println(nextM);  

更坑的在这里:

long n = 30*24*60*60*1000;  long nl = 30*24*60*60*1000L;  System.out.println("n="+n);  System.out.println("nl="+nl);  

可以参考下面的输出结果:

n=-1702967296  nl=2592000000  

提示: int 值可以放下多大的值?

11. 关于List的instanceof ,请说出123

import java.util.ArrayList;  import java.util.List;  /**  *  下面的代码执行(输出)结果是什么?  */  public class TestInstanceOf {      public static void main(String[] args) {          List<String> listS = new ArrayList<String>();          List<TestInstanceOf> listI = new ArrayList<TestInstanceOf>();          // 下面的代码执行(输出)结果是什么?          if (listS instanceof List<TestInstanceOf>) {              System.out.println("listS instanceof List<TestInstanceOf>="+true);          } else {              System.out.println("listS instanceof List<TestInstanceOf>="+false);          }      }  }  

12.1. 怎么理解Spring?

> 容器,工厂,消除直接依赖,多个启动阶段,core,context包的作用等。

12.2. Spring 的AOP是使用什么方式实现的?

> 代理,反射机制,cglib...

13. MySQL数据库的隔离界别

> 4个,默认是可重复读

14. Oracle 查询树形结构的关键字

> connect by prior , 大数据量可能会卡死

15. MySQL 可重复读场景

> 假设100万条数据,开启事务,读取到50万条了,现在另一个连接删除了后50万条,并提交。>> 问: 第一个客户端还能继续读取到后面的数据吗? 如何实现的> redo,undo日志,为第一个连接进行模拟恢复

16. MySQL 的 bin-log 的理解

> 两种格式: 基于语句,基于行

17. HTTP,TCP/UDP所处的层

> 应用层,传输层

18. redis,mongoDB,HBase的适用场景

> redis, 缓存,分布式序列> mongo, 小文件,图片,对象> hbase, 写多读少,放日志,或者存储大字段数据

19. redis 的数据类型

20. redis 的 过期时间 有什么用,实现原理

> 数据库数据有变更时,通知缓存失效. 类似会话数据之类的,增加时就设置过期时间>> 后台有线程定期进行清理. 每次查询时也进行判断. 底层将 key 与 过期时间(戳)放在一起。

21. Linux 安装Oracle的JDK, 配置文件放在何处

> /etc/profile.d/

22. 性能调优有哪些手段

23. JVM怎么进行分析

24. Dubbo

> RPC, 注册中心,容灾机制

25. MyBatis 的 #,$

26. 项目案例,担任角色

27. HashMap 的实现原理

> hash, bucket/数组,链表

28. ConcurrentHashMap 实现原理,锁的粒度

> 每个bucket就是一个锁

29. 写一段程序,实现 冒泡排序

> 说原理不行,必须手写

30. Integer 的缓存, 127, ==, equals 问题

31. AtomicXXX 的使用

32. Lock 的各种实现,类型,消耗,以及适用场景

33. 具体调优案例及分析

34. JVM 内存分区,如何查看各个空间的大小

35. GC的适用场景, G1, CMS,各个内存区的回收算法

36. 线程池

> 异步任务,分类,submit() 与 excutive() 的区别: 有无返回值

37. 数据库方面(SQL优化、SQL注入、越权、索引等)、

38. ThreadLocal 原理

0 0
原创粉丝点击