如果是能简单搜索到的问题,那列出来也没必要。慢慢积累。
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 {
-
-
-
- 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);
- System.out.println("num2="+ num2);
- System.out.println("num3="+ num3);
- System.out.println("num4="+ num4);
- }
- }
6. Java面试题: 如何在一个 interface 中 执行一些操作
- package com.test.test.java;
-
-
-
- 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一样?
- {"name": "csdn", "age": 11}
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.