面试题
各种地方看到的好的面试题,给分到这个分类来。
请叫我大师兄_
请叫我大师兄
展开
-
有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2..
具体题目如下:有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2....B:2 3 4 1 2 3....C:3 4 1 2 3 4....D:4 1 2 3 4 1....以上就是我看到的一个多线程相关的面试题,原创 2017-07-25 14:20:37 · 5738 阅读 · 9 评论 -
Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定。我就实际弄个代码,看下执行顺序。public class Line { static { System.out.println("静态代码块执行:loading line"); } public static String s原创 2017-07-19 10:31:20 · 8241 阅读 · 14 评论 -
谈谈面试别人的感受
工作几年的人啦,竟然不知道switch case,每个case是需要break的。不然就一路执行到底。工作几年的人啦,竟然没见过for(; i 工作几年的人啦,竟然不知道i++和++i的区别。工作三年的竟然给我说hashmap是有序的吧。好几个人都这么说。工作三年的,十年的,十四年的,竟然都不知道Java的集合中的hashmap底层是数组加链表。工作十四年的人啦,map接口的几原创 2017-06-22 17:39:01 · 5435 阅读 · 62 评论 -
Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法。子类也是这样,然后继承之后,关于程序打印输出的结果。涉及到Java类的各种成员的初始化顺序。经测试,得到如下结论:1.父类【静态成员】和【静态代码块】,按在代码中出现的顺序依次执行。2.子类【静态成员】和【静态代码块】,按在代码中出现的顺序依原创 2017-04-20 19:30:32 · 10183 阅读 · 0 评论 -
用递归算法写一段程序实现 1+2+...+1000000 、java.lang.StackOverflowError 异常,原因,bug调查,处理
Exception in thread "main" java.lang.StackOverflowError题目原来是:用递归算法写一段程序实现 1+2+...+1000000然后,简单吗,就是个递归吗,有基础的同学,分分钟就把代码给码完了。但是,面试的时候,自己没电脑的吗,你又不知道代码的运行结果是啥。写完之后,感觉甚好。但是,在机器上一运行就炸了。具体如下:pac原创 2017-03-02 18:33:23 · 2295 阅读 · 1 评论 -
Java 求1-100以内的所有素数,判断一个数是不是素数。Java代码实现附测试结果图
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。小师弟问了我个这么个联系题,虽然看似简单,但是,大家都觉得简单的东西,没必要分享的话,那初学者,不是很痛苦吗?所以,我就给小师弟示范了一下。方便初学者,看看怎么写代码。代码内部的细节(都是针对没开始工作,或者刚刚工作的哥们):1,模块化思想。先原创 2017-03-02 17:46:32 · 44371 阅读 · 3 评论 -
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。分析:这是一道广为流传的google面试题。别人分享个题目给我,如上。 private static void testOneNumber() { Integer s = 11;原创 2017-02-08 16:26:03 · 3981 阅读 · 3 评论 -
求答案 ? 一筐鸡蛋: 1个1个拿,正好拿完。 2个2个拿,还剩1个。 3个3个拿,正好拿完。 4个4个拿,还剩1个。 5个5个拿,还差1个。 6个6个拿,还剩3个。 7个7个拿,还剩4个。 8个8个
别人分享个题目给我,如下。求答案 ?一筐鸡蛋:1个1个拿,正好拿完。2个2个拿,还剩1个。3个3个拿,正好拿完。4个4个拿,还剩1个。5个5个拿,还差1个。6个6个拿,还剩3个。7个7个拿,还剩4个。8个8个拿,还剩1个。9个9个拿,正好拿完。问筐里最少有多少鸡蛋? private static void testResult()原创 2017-02-08 16:06:26 · 56975 阅读 · 4 评论 -
一道Java相关的小程序题(一个无序数组里有99个不重复正整数,范围从......)
一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数?题目扩展:一个无序数组里有若干个正整数,范围从1到100,其中99个整数都出现了偶数次,只有一个整数出现了奇数次(比如1,1,2,2,3,3,4,5,5),如何找到这个出现奇数次的整数?题目第二次扩展:一个无序数组里有若干个正整数,范围从1到100,其中98个整数都出现了偶数次,只有两个原创 2016-10-27 14:55:12 · 3621 阅读 · 9 评论 -
java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
一)哈希表简介非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。 哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f原创 2016-08-21 22:13:37 · 47114 阅读 · 21 评论 -
Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向
一、Java基础1. String类为什么是final的。2. HashMap的源码,实现原理,底层结构。3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。4. 描述一下ArrayList和LinkedList各自实现和区别5. Java中的队列都有哪些,有什么区别。6. 反射中,Class.forName和classloa原创 2016-08-11 13:42:33 · 8160 阅读 · 4 评论 -
Java常量池的面试题 Integer Cache
一道很让人头疼的Java面试题。好像也不太像面向应届生的题目,不过里边一些了解一下还是不错的。今天My partner问我一个让他头疼的Java question,求输出结果:/** * * @author DreamSea 2011-11-19 */ public class IntegerTest { public static void m转载 2016-07-26 10:34:06 · 5431 阅读 · 3 评论 -
9个Java对象的初始化和回收的面试题
Java的初始化和回收相关知识是公司在面试开发人员时常考察的问题,这里列出了8大常见的题型。1.Java中是如何区分重载方法的?通过重载方法的参数类型和顺序来进行区分的。注意:若参数类型和顺序均相同时,不管参数名是否相同,编译器均会报错,提示方法已经被定义。且不能根据返回值类型来区分,如果根据返回值来区分的话,有时程序里调用方法时并不需要返回值,那么程序都无法确定该调用那个转载 2016-06-06 10:49:49 · 2500 阅读 · 0 评论 -
Java反射结合属性文件实现工厂模式
通过属性文件的形式配置所需要的子类首先创建一个fruit.properties的资源文件内容为:apple=Reflect.Appleorange=Reflect.Orange然后编写主类代码package Reflect;import java.io.*;import java.util.*;interface fruit { void eat();原创 2016-08-20 00:47:42 · 1912 阅读 · 0 评论 -
java反射详解---具体代码操作看看反射都能干些什么
1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。2反射机制能做什么反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。转载 2016-08-20 00:01:58 · 4903 阅读 · 7 评论 -
使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。
使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。(考察高效率,解决产生冲突的问题)代码虽然实现了。提高效率的地方有如下:1.初始化set集合的时候 Sets.newHashSetWithExpectedSize(value),给初始化带个固定大小,减少了集合在扩容的时候,值重新复制的问题。这的效率稍有提高。2.Random random = new Rand原创 2016-09-20 17:25:00 · 8623 阅读 · 4 评论 -
Java HashMap中在resize()时候的rehash,即再哈希法的理解
HashMap的扩容机制---resize()扩容(resize)就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组,就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。我们分析下resi原创 2016-08-22 00:24:52 · 29411 阅读 · 28 评论 -
Cookie与Session的区别-总结很好的文章
本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。cookie机制Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用coo转载 2017-03-24 22:32:49 · 2020 阅读 · 0 评论 -
java反射中,Class.forName和classloader的区别(代码说话)
java中class.forName()和classLoader都可用来对类进行加载。class.forName()前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。Class.forNam...原创 2016-08-20 17:14:47 · 58328 阅读 · 15 评论 -
String a= “abc” String b = "abc" String c = new String("abc") String d = "ab" + "c" .他们之间用 == 比较的结果
做个string的测试咯。如下:String a= “abc” String b = "abc" String c = new String("abc") String d = "ab" + "c" .他们之间用 == 比较的结果Java中字符串对象创建有两种形式。一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");这两种方式我们在代码编写时都经常使用,尤其是字面量的方式原创 2016-08-19 13:43:59 · 12633 阅读 · 10 评论 -
Java单链表的逆序
首先需要一个node,来实现单链表。package com.lxk.linkedList.oneWay;/** * @author lxk on 2017/8/1 */public class Node<K, V> { private final K key; private V value; private Node<K, V> next...原创 2018-04-11 11:23:16 · 1636 阅读 · 0 评论 -
利用反射机制实现工厂模式
package Reflect;interface fruit{ public abstract void eat();}class Apple implements fruit{ public void eat(){ System.out.println("Apple"); }}class Orange implements fruit{原创 2016-08-20 00:43:10 · 5930 阅读 · 6 评论 -
java7--(1.7)也可能还早的-----HashMap的实现原理
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。下面就来分析HashMap的存取。一、定义 HashMap实现了Map接口...转载 2016-08-14 23:06:32 · 12102 阅读 · 3 评论 -
java中的==、equals()、hashCode()源码分析
1. == java中的==是比较两个对象在JVM中的地址。比较好理解。看下面的代码:public class ComAddr{ public static void main(String[] args) throws Exception { String s1 = "nihao"; String s2 = "nihao";原创 2016-08-22 19:57:09 · 2252 阅读 · 3 评论 -
Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称转载 2016-08-22 19:15:00 · 21096 阅读 · 3 评论 -
Java 8系列之重新认识HashMap
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.M...转载 2016-08-14 23:02:09 · 11121 阅读 · 24 评论 -
Java 异常机制,异常的结构,运行时异常和非运行时异常
Java异常机制异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。Java异常体系结构呈转载 2016-08-21 18:00:04 · 7778 阅读 · 0 评论 -
Java 中队列的使用示例及常用方法示例和比较
在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。Queue接口与List、Set同一级别,都是继承了Collection接口。Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。新加的方法肯定有好处,不然干嘛加他,直接用add和remove方法不就好啦。原创 2016-08-20 22:53:26 · 13172 阅读 · 0 评论 -
JAVA 中的几种基本数据类型是什么,各自占用多少字节。
先了解2个单词先:1、bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。2、byte --字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。1B=8bit1Byte=8bit1KB=1024Byte(字节)=8*1024bit1MB=1024KB1...原创 2016-08-20 17:55:39 · 13171 阅读 · 0 评论 -
Java数组和链表两种结构的操作效率,在哪些情况下,哪些操作的效率高
首先这个问题,没有固定答案,全看个人理解,毕竟这2个的数据结构,大家肯定都是知道的。能有如下回答,基本就够用啦。数组:数组就像一个班级一样,一旦分完班,一个班多少人,每个人的学号啥的都是确定的啦,根据学号,喊一个学号就会有个人中,这个学号就是下标,根据下标找人就是快。单个之间关系不大链表:链表就像一个铁链,一环扣一环,不能跳过一个,直接去找下一个,必须挨个找,根据节点的原创 2016-08-21 16:19:41 · 8869 阅读 · 0 评论 -
String 类的常用方法及其大概实现原理
Java String类是灰常常用的一个类,但是天天在用每页没管过。今天就来看看哪些是常用方法的然后了解一下其大概实现然后希望达到的效果是:自从看了我的这个字符串类,让你忘了你的她(他)。关于字符串函数(split、join、indexOf、substring),这些常用的方法可参考下链接;虽然总结的是js的,但是一样的,join是java 1.8d的字符串函数(spl原创 2016-08-19 11:54:23 · 4373 阅读 · 0 评论 -
HashMap的数据结构---示意图和结构的理解
1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图: 从上图我们可以发现哈希表是由转载 2016-08-15 11:41:12 · 6469 阅读 · 0 评论 -
HashMap的工作原理--重点----数据结构示意图的理解
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2016-08-15 11:43:20 · 15654 阅读 · 2 评论 -
详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)
虽然上文有提到怎么解释的开放地址法处理hash冲突,但是当时只是给了个简单的图,没有 详细讲解一下,我当时有点不明白,回头查查资料,然后亲自动手,整理了一下。然后我就三幅图详细讲解一下:什么叫线性探测再散列;什么叫平方探测再散列(二次探测再散列);老师的ppt吧。给个原始数据如上图。下面详细解析。上面的是线性探测再散列。这个简单。原创 2016-08-28 22:38:44 · 88811 阅读 · 29 评论 -
工厂模式的代码实现,简单易懂。
工厂模式的代码实现,简单易懂。interface fruit { public abstract void eat();}class Apple implements fruit { public void eat() { System.out.println("Apple"); }}class Orange implements fruit原创 2016-08-20 00:39:54 · 12305 阅读 · 2 评论 -
gbk和utf8的区别
我们这里将以最简单最容易理解的方式来描述GBK和UTF8的区别,以及它们分别是什么。GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码。GBK和UTF8有什么区别?UTF8编码格转载 2016-08-28 22:59:01 · 6049 阅读 · 6 评论 -
递归读取文件夹下的文件,代码怎么实现
这个问题就是在考验你递归,让你写个递归方法出来。也只有递归才能这么解决问题。具体实现如下: /** * 递归读取文件夹下的 所有文件 * * @param testFileDir 文件名或目录名 */ private static void testLoopOutAllFileName(String testFileDir) {原创 2016-09-07 18:30:15 · 6471 阅读 · 0 评论 -
Java IO流分析整理
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 第一个:输出流: 输入流:因此输入和输出都是从程序的角度来说的。第二个:字节流:一次读入或读出是8位二进制。字转载 2016-09-07 20:16:55 · 1755 阅读 · 0 评论 -
String类为什么是final的
首先,先得清楚 final 这个关键字。 final的出现就是为了为了不想改变,而不想改变的理由有两点:设计(安全)或者效率。final 修饰的类是不被能继承的,所以 final 修饰的类是不能被篡改的。 了解了这一点,我们再看看问题:1、从设计安全)上讲, 1)、确保它们不会在子类中改变语义。String类是final类,这意味着不允许任何人定义String的子类。换原创 2016-08-12 13:44:44 · 32213 阅读 · 1 评论 -
一个数组的倒序----管他Java还是c还是c++还是其他
一个数组的倒序,管他什么语言,一个简单的for循环还是都支持的吧,既然这样,何必给他打上语言的标签呢。就是一个for循环的事。如下: private static void testArrayReverse() { int[] data = {22, 12, 33, 24, 75}; System.out.println("原顺序" + Array原创 2016-09-20 14:51:27 · 3164 阅读 · 0 评论