![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试真题
文章平均质量分 71
19年,重新开始写
求学之路,泛结良师,广交益友
展开
-
java序列化与反序列化
概念java序列化是将对象转换成字节序列的过程;而java反序列化是将字节序列转换成对象的过程;由来我们都知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,比如文本、图片、音频、视频等,而这些数据都是以二进制的形式进行发送的,那么能否实现进程间的对象传送吗?这个时候就需要对象的序列化和反序列化了:发送方需要使用序列化将对象转换成字节序列进行发送,而接收方需要使用反序列化将接收到的字节序列转原创 2017-10-16 21:42:46 · 350 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-08
<方法重载> 同一个类中的方法的重载:方向名相同,参数列表不同;而方法的返回值类型和修饰符都是没有关系的;如下程序的输出结果:public class IfTest{ public static void main(string[]args){ int x=3; int y=1; if(x=y) System.out.p原创 2017-09-09 02:00:24 · 402 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-07
<泛型经典>class A {}class B extends A {}class C extends A {}class D extends B {}Which four statements are true ?A.The type List<A>is assignable to List.B.The type List<B>is assignable to List<A>.C.Th原创 2017-09-07 09:59:57 · 1166 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-06
<经典>关于ArrayList扩容的讲解: ArrayList的构造器总共有三个:ArrayList()无参构造器构造一个初始容量为10的空列表,每次扩容大小为1.5倍; ArrayList(Collection ArrayList(int initialCapacity)构造一个具有指定初始容量的空容量;这种方式是指定了创建的容量大小,没有扩充;<经典>关于HashMap和HashTa原创 2017-09-06 02:06:42 · 531 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-05
JSP九大内置对象 分别为:request/response/session/out/page/application/exception/config/pageContext;具体看博客:http://blog.csdn.net/qq_27905183/article/details/52820244对于Integer对象来说,当一个int类型的变量直接赋给一个Integer对象,会调用Int原创 2017-09-05 02:00:44 · 902 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-04
如下代码输出结果为:public class Base{ private String basename = "base"; Base(){ callName(); } public void callName(){ System.out.println(basename); }}public class Sub extends Base{ private原创 2017-09-04 01:20:37 · 641 阅读 · 0 评论 -
java8新特性
接口默认方法java78允许我们为接口提供一个默认的非抽象方法,只需要使用default关键字修饰该方法即可,这种方法也叫扩展方法,该方法的使用与一般的类使用普通方法是一样的,区别仅仅是他是接口的方法public interface inter{ void tt(); default void test(){ System.out.println("hello def原创 2017-08-14 11:47:46 · 259 阅读 · 0 评论 -
牛客网前端工程师评估笔试题总结
1.css的overflow属性,如果为scroll值时,不管是否需要,用户代理都会提供一种滚动机制,也就是说,不管是否溢出,都会显示滚动条,而使用auto则会自动进行判断是否需要滚动条2.falsh和js之间的交互通过ExternalInterface接口进行交互,ExternalInterface接口有两个方法:call和addCallBack,其中call的作用是让Flash调用js里面的方法原创 2017-07-29 13:33:20 · 1822 阅读 · 0 评论 -
java基础面试题汇总2(十题一章)
1.写clone()方法时,通常都会有一行代码,是什么?clone缺省行为:super.clone();因为首先要把父类中的成员先复制,然后再复制自己的成员2.java中的多态机制是什么?父类或者接口定义的引用变量时可以指向子类或具体实现类的实例对象,而程序调用的方法在运行时才会进行动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方原创 2017-08-03 17:47:14 · 447 阅读 · 1 评论 -
java的override和overload详解
在详解override和overload前需要对多态做一个详细的了解什么是多态?多态的教科书标准定义:允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。其实可以借助于生活中的常见的一种多态现象来解释多态:比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Wi原创 2017-10-18 01:02:42 · 1176 阅读 · 0 评论 -
二叉树的前序遍历的递归实现与非递归实现
概念 二叉树的前序遍历可以称为前根序遍历,遍历的顺序依次为:每个(子)树的根节点->左子节点->右子节点 举例说明 该图的前序遍历的结果为:ABDECF 前序遍历非递归实现思路步骤讲解: 对于任意结点p(当前遍历的结点): 1.先输出该节点,然后存放到栈中,执行:p = p->left;并判断p是否为空 2.p不为空(即之前结点的原创 2017-10-10 17:23:03 · 1098 阅读 · 0 评论 -
java并发程序设计总结六:线程池
多线程的软件设计方法确实可以最大限度的发挥现代多核处理器的计算能力,但是如果不加控制和管理的随意使用创建线程,对系统的性能反而会产生不利的影响。不适用线程池的线程优化可以使用如下方式来创建线程,他会在run结束之后,自动回收线程资源:new Thread(new Runnable(){ public void run(){ // do something... }}翻译 2017-10-23 20:28:23 · 343 阅读 · 0 评论 -
java设计模式总结十:享元模式
享元模式定义享元模式(Flyweight Pattern),又称轻量级模式(这也是其英文名为FlyWeight的原因),通过共享技术有效地实现了大量细粒度对象的复用。享元模式简单的说就是共享,举个例子,有十个人需要用笔,这十个人不是同时需要使用,这时候我们没有必要拿出十只笔,可以从1开始依次拿给他们,当不够的时候再拿,这里用到的就是享元模式的概念:共享现在,面向对象技术虽然可以很好的解决一些灵活性问转载 2017-11-02 16:53:12 · 662 阅读 · 0 评论 -
java设计模式总结九:合成模式
合成模式定义合成模式,也叫树形模式,就是把部分和整体的关系通过树形结构来表示,使得客户端对单个对象和组合对象的使用具有一致性合成模式也是继承的另一种替代方法合成模式组成结构合成模式主要由三个部分组成:抽象类、叶子类和父类1.抽象类:这是一个抽象角色,它给参加组合的对象定义出公共的接口以及默认的行为,组合对象的名义父类可以通过它来管理所有的子对象,而不需要通过继承2.叶子类:名义上的子类,通过实现接口原创 2017-11-02 16:05:50 · 768 阅读 · 0 评论 -
java高并发程序设计总结五:jdk并发包其他同步控制工具类:ReadWriteLock/CountDownLatch/CyclicBarrier/LockSupport
读写锁ReadWriteLock之前的博客介绍了synchronized和重入锁ReentrantLock都可以实现线程同步,这两种方式确实实现了线程同步,保证了同时只能有一个线程能获得锁资源。不过他们有一个缺点:多个线程对数据进行读取操作也是需要进行等待的。而这实际上是没必要的,因为读操作不会对数据造成污染。ReadWriteLock的出现优化了这一个缺点:多个线程读不会阻塞,而读写和写写会进行阻翻译 2017-10-23 13:40:27 · 342 阅读 · 0 评论 -
java高并发程序设计总结四:JDK并发包之信号量Semaphore
概念信号量是对锁的一种扩展。不管是对于synchronized还是对于ReentrantLock锁来说,一次都只允许一个线程获取锁资源,其余的线程都只能处于等待状态。而信号量可以指定多个线程同时访问某一个资源,包括锁资源Semaphore主要提供了一下两个构造函数public Semaphore(int permits);初始化信号量并指定能同时访问的线程数量public Semaphore(int翻译 2017-10-23 10:41:27 · 804 阅读 · 0 评论 -
java高并发程序设计总结三:JDK并发包之ReentrantLock重入锁
为了更好的支持并发程序,jdk内部提供了大量实用的API和框架,重入锁就是一种对同步的扩展ReentrantLock起源在1.5的时候,synchronized关键的性能不是很好,这也是concurrent并发包出现的一种潜在原因,而新出现的ReentrantLock重入锁的性能那时比synchronized好太多,也提供了更加灵活、细粒度的同步操作。(在jdk1.6开始,jdk在synchroni翻译 2017-10-22 13:19:10 · 1022 阅读 · 0 评论 -
java设计模式总结一:简介和原则
设计模式分类设计模式分为三大类:创建型模式、结构型模式和行为型模式创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类转载 2017-10-28 00:06:19 · 351 阅读 · 0 评论 -
JVM内存模型介绍
java内存分配 JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。 java按照内存使用区域可以分为四个部分:堆、栈、方法区和程序计数器;其中栈又可以分为两大部分:java虚拟机栈和本地方法栈;下面我将通过自己的学习与别人总结的参考见解来介绍下jvm原创 2017-10-05 17:08:46 · 447 阅读 · 0 评论 -
java并发程序设计总结七:jdk的并发容器
线程安全的HashMap:Collections.synchronizedMap()Collections工具类中提供了一系列synchronizedXxx方法用于包装对应的集合对象成线程安全的。这里就介绍下HashMap:public static <K,V>Map<K,V> synchronizedMap(Map<K,V> m);该方法会生成一个名为synchronizedMap的Map,它使用翻译 2017-10-27 19:46:29 · 476 阅读 · 0 评论 -
java基础部分面试题汇总1(十题一章)
1.一个Java源文件中 是否可以包括多个类(内部类除外)?有什么限制?一个java文件中可以包括多个类,但是必须有且只能有一个类被public修饰,且该类名必须与文件名相同2.&和&&的异同相同点:他们都可以用作逻辑与的运算符不同点:&还可以做位运算符,进行按位与;&&具有短路逻辑与的特点3.switch语句能否作用在byte/long/Sytinh上?在switch(condition)中,co原创 2017-08-03 13:51:43 · 304 阅读 · 0 评论 -
搜狗2015java工程师笔试题总结
1.下列关于Java并发的说法中正确的是()A.CopyOnWriteArrayList适用于写多读少的并发场景B.ReadWriteLock适用于读多写少的并发场景C.ConcurrentHashMap的写操作不需要加锁,读操作需要加锁D.只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了正确答案为B。A,CopyOnW原创 2017-07-30 09:11:18 · 473 阅读 · 0 评论 -
递归算法经典之快速排序
1.快速排序采用分区交换排序的概念,将一列数据通过基准数来分成两个部分,左边为比基准数小的数,右边为比基准数大的数,一般来说选取的基准数都是进行快排的这一列数据的第一个数据2.快速排序的主要思想:每次以第一个数为基准数,来分开当前进行操作的那一段,通过使用两个指针,一个从左向右查找大于基准数的index索引指针i,一个从右向左查找小于基准数的index索引指针j,最终比较的条件是i == j,这时候原创 2017-03-20 21:35:59 · 686 阅读 · 0 评论 -
递归经典算法之多转向旋转方阵
1.将前n^2个正整数填入n*n的方阵中,分为四个转向:1>从方阵的左上角开始,由外层至中心按照顺时针的方式螺旋排列而成的数字方阵,称为n阶顺转向内方阵2>从方阵的左上角开始,由外层至中心按照逆时针的方式螺旋排列而成的数字方阵,称为n阶逆转向内方阵3>从方阵的中心开始,由中心至外层按照顺时针的方式螺旋排列而成的数字方阵,称为n阶顺转向外方阵4>从方阵的中心开始,由中心至外层按照逆时针的方式螺旋原创 2017-03-20 21:23:51 · 1171 阅读 · 0 评论 -
经典递归算法之哈诺塔问题
汉诺塔问题:有三根柱子A,B,C,其中A上面有n个圆盘,从上至下圆盘逐渐增大,每次只能移动一个圆盘,并且规定大的圆盘不能叠放在小的圆盘上面,现在想要把A上面的n个圆盘全部都移动到C上面,输出移动的总步数以及移动的过程分析://先求出移动的总步数1,假设g(n)表示n个圆盘时的移动总的步数,当n=1时,g(1)=1;2.现在可以把g(n)进行细分为三步: 1>先将n-1个圆盘从A通过C移动到原创 2017-03-20 11:53:31 · 1343 阅读 · 0 评论 -
经典算法题摘要
摘要网址:http://blog.csdn.net/pcpanchen/article/details/16851151转载 2017-01-11 21:28:18 · 270 阅读 · 0 评论 -
谷歌经典面试题集锦
参考网址:http://student.csdn.net/mcd/topic/833628/944375转载 2017-01-10 21:21:24 · 696 阅读 · 0 评论 -
分水问题
题目: 有三个桶,两个大桶分别可装8斤的水,一个小桶可装3斤的水。现在有2个8斤的桶全部装满了水,3斤的小桶空着。 如何把这16斤水平均分给4个人,每人4斤水。注意:不能使用其他任何工具,4人自备容器,分出去的水不可再要回来。参考答案1: 3个桶最初的装水状态为880,首先将一个大桶的水倒入小桶中,倒满,表示为853(第二个大桶减少3斤水,小桶增加3斤水),则过程如下:转载 2017-01-10 21:04:09 · 1529 阅读 · 0 评论 -
IT推理 - 拿钻石
题目: 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?经典答案1: 这道题根本不可能百分之百的拿到最大的那个钻石,而且能拿到的钻石是最大的那颗的概率还是很低的, 接近1/10也就是和你随机抽取一个出来是最大钻石的概率相似,但是我们可以通过分析取最优解,也就是拿尽量大的钻石,转载 2017-01-10 20:47:28 · 1034 阅读 · 0 评论 -
4.22百度面试题
4.22日百度发布了这样一个面试题,看似很简单,但是却淘汰了近乎85%的人题目:依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。错误代码示范:public void foo() { for (int i = 0; i < 100; i++)转载 2017-01-10 19:47:28 · 309 阅读 · 0 评论 -
回溯经典算法之四皇后问题
1.问题概述:在一个4*4的方格中住着四个皇后,他们之间都不友好,相邻就会打架,现在要进行查找能够满足:每行每列每个斜线都只有一个皇后,才能没有打架发生2.思路:这里需要这样进行查找,第一个皇后先在第一行第一列开始假定位置,然后第二行第二个皇后满足条件来摆放,如果到后面有皇后不能放在能满足条件地方了时就回到她的前一个皇后并换一个地方,或者在前一个。。。就这样,最后得到了结果是2413定义一个数组a[原创 2017-03-21 19:33:22 · 9075 阅读 · 4 评论 -
牛客面试题集锦之java中的"引用传递"
java没有指针,因此也就没有引用传递这一说法,只有值传递,不过可以通过对象来实现引用传递,这种引用传递和指针原生的引用传递不一样:java值传递:方法调用时,实际参数将它的值传递个形式参数,期间在方法中形式参数的改变并不会改变实际参数的值java引用传递:也叫做地址传递。传递参数时,形式参数将和实际参数指向同一个地址,相当于实际参数的一个副本,具体实际参数会不会改变需要看操作的方式java中的引用原创 2017-03-13 00:34:34 · 553 阅读 · 0 评论 -
计算n!
计算n的阶乘时需要考虑结果溢出的情况,如果n的值较大,就不能简单的使用int类型或者long、double这些类型来保存结果值。这个时候我们可以使用数组来保存结果,每个元素对应结果的每一个位数 int result[n];这时候,我们需要判断result数组的长度,也就是n的值,那么如何求解出这个n的值呢?我们看看下面:int resultint = 1*2*3*...*n;判断一个数的位数通常是原创 2017-03-13 23:37:27 · 1056 阅读 · 0 评论 -
阿里巴巴2016前端工程师笔试题1总结
1.浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?正确答案为: post常见的存储方式有六种:IndexDB/Cookie/get请求/post请求/Session/StorageIndexdDB 是 HTML5 的本地存储,把一些数据存储到浏览器(客户端)中,当与网络断开时,可以从浏览器中读取数据,用来做一些离线应用。Cookie 通过在客户端原创 2017-07-30 08:15:59 · 1212 阅读 · 0 评论 -
百度前端面试题错题汇总
使用纯html+css实现如图实现代码dom结构:<div id="demo1"> <div id="demo2"></div></div>css样式:#demo1{ margin-top: 50px; margin-bottom: 50px; width: 100px; height: 100px; border: 2px solid blac原创 2017-07-16 20:08:42 · 442 阅读 · 0 评论 -
java实现删除文件夹下所有的文件
实用场景在开发项目时,通常需要对文件进行相应的操作,删除和创建是最常见的实现代码//获取目录名File rootfile = new File("blog/tools/animate");File[] files = rootfile.listFiles();//遍历删除文件for(File file: files){ file.delete();}//最后删除文件夹rootf转载 2017-06-28 14:32:41 · 1893 阅读 · 0 评论 -
java中的初始化顺序
类的初始化总共分为下面几种1.定义变量时的初始化2.初始化块创建类的对象时,定义变量并赋初始值之后,最先使用初始化块进行初始化,初始化块分为一般初始化块和静态初始化块 一般初始化块:形如{},一般初始化块里可以初始化普通成员变量,也可以初始化类成员变量, 静态初始化块:形如static{},静态初始化块只可以初始化静态成员变量. 如果同时存在两种初始化块,则静态初始化块最先进原创 2017-05-27 16:13:18 · 345 阅读 · 0 评论 -
杨辉三角算法
1.杨辉三角算法分析:1>每一行的首尾都是12>第几行就有几个元素3>从第三行开始,除了每行的首尾,其余的每一个元素都是上面的两个相邻的元素之和2.实现代码:public class test{ public static void main(String[] args){ test t = new test(); t.fun();原创 2017-03-16 18:01:23 · 953 阅读 · 0 评论 -
超级素数实现算法
1.超级素数的概念:一个m位数的素数,从高位到低位一次去掉一个数,仍然都是素数。输入m,输出m为超级素数的总个数并且输出最大m为的超级素数2.分析:可以从两个方向出发:1>从1位开始找素数,然后一步步加位数,查找素数;2>从m位开始找,然后在去掉最高位,在查找素数。。。 不管是什么方法,我们都发现,超级素数f一定是素数或者f个位数一定是3或者73.实现代码:public class test{原创 2017-03-16 17:33:04 · 3793 阅读 · 1 评论 -
双和数组探索算法
1.双和数组的概念:将一个偶数2S分解成六个互不相等的正整数a,b,c,d,e,f,这六个正整数满足三个条件: 1.a+b+c = d+e+f 2.1/a+1/b+1/c=1/d+1/e+1/f 3.apublic class test{ public static void main(String[] args){ test t = new t原创 2017-03-14 00:25:53 · 417 阅读 · 0 评论