面试题积累

简介: 如果是能简单搜索到的问题,那列出来也没必要。慢慢积累。1. 如何判断一个数是2的幂。个人认为,数字转化为二进制,符号位为0,余下部分有且只有最左边一位是1,其余位都是0,才是2的幂。 原理是 乘二则向左进一位。

如果是能简单搜索到的问题,那列出来也没必要。慢慢积累。

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一样?

{"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.




目录
相关文章
|
7月前
|
SQL 存储 JavaScript
蓝队面试经验详细总结
这篇文稿概述了多种网络安全漏洞和攻击方式,包括SQL注入、XSS、XXE、文件上传、文件包含、命令执行、CSRF、SSRF、信息泄露和中间件漏洞。
68 0
|
7月前
|
SQL 安全 网络协议
关于技术面试问题
360 SQL的存储引擎 SQL注入写shell的条件,用法 GPC是什么?开启了怎么绕过 Mysql一个@和两个@什么区别 IIS解析漏洞,不同版本有什么漏洞,还有什么容器解析漏洞 wireshark抓包,数据报经过三层交换机、路由的变化,NAT协议描述,地址进入内网怎么变化 linux计划任务,黑客隐藏自己的计划任务会怎么做。windows计划任务怎么设定
196 0
|
7月前
|
安全 架构师 网络安全
关于技术人的面试
注意!HR面试的时候会有非常多的坑,熟悉我在这里写的问题,回答的时候情商高一点,不要跟HR吵起来,也不要有不合时宜的意见分歧,这个度最好自己能让同学、朋友担任面试官,多多挑你的刺,不断练习自己的反应能力。技术面试通过的,在HR这边通不过的例子是有很多的!
467 0
|
SQL 安全 fastjson
Hvv,面试经验
Hvv,面试经验
373 0
|
Cloud Native 算法 程序员
实用的面试经验分享:程序员们谈论他们的面试历程
实用的面试经验分享:程序员们谈论他们的面试历程
78 0
|
XML Java 数据库连接
备战金九银十:Java核心技术面试题100+(含大厂面试整体及解析)
一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理。
|
存储 缓存 算法
助力金三银四面试JVM 高频面试题篇
助力金三银四面试JVM 高频面试题篇
助力金三银四面试JVM 高频面试题篇
|
人工智能 运维 Kubernetes
|
SQL 分布式计算 算法
如何进行技术面试?
自从我开始工作以来,我已经面试了大约60名开发人员,我仍然在徘徊如何提高我作为技术面试官的技能。我从来没有一个表格来解释如何进行面试。这些年来,我改变了采访别人的方式。我也降低了我的期望,因为我没有从事需要世界级开发人员的项目。 法国IT市场 在谈到招聘之前,我必须介绍法国IT市场,因为它是一个非常具体和特殊的市场。在法国,技术工作被低估了。这在许多国家都是如此,但这种现象在法国非常发达。 只有极少数公司重视技术领域的经验,特别是在IT领域。这意味着,超过35岁,如果你仍然是一名开发人员,你就是一个“宽松者”,你可能会挣扎到40岁以上才能找到一份新工作。你的薪水很快就会停止增长,因为
150 0
如何进行技术面试?
|
消息中间件 缓存 分布式计算
大数据面试需要掌握的知识点
大数据常见考察知识点
145 0