`

java面题

    博客分类:
  • java
阅读更多

<!----><!----> <!---->

Java 部分

1 .求两个数的最大公约数

解答:

欧几理德原理 : 辗转相除法

         public static int zdgys(int a,int b){

                   int x = a%b;

                   if(x==0) return b;

               else return zdgys(b,x);

         }

<!---->2.  <!---->关于 java 垃圾回收器的认识

解答:

对于 GC 来说,当程序员创建对象时, GC 就开始监控这个对象的地址、大小以及使用情况。通常, GC 采用有向图的方式记录和管理堆 (heap) 中的所有对象。通过这种方式确定哪些对象是 " 可达的 " ,哪些对象是 " 不可达的 " 。当 GC 确定一些对象为 " 不可达 " 时, GC 就有责任回收这些内存空间。可以。程序员可以手动执行 System.gc() ,通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。

<!---->3.  <!---->请问如何设计一个类,使其只能被初始化为一个实例。

解答:

Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。

第一种形式 : 定义一个类,它的构造函数为 private 的,它有一个 static private 的该类变量,在类初始化时实例话,通过一个 public getInstance 方法获取对它的引用 , 继而调用其中的方法。

附件:

package parent.career.blest;

 

class Singleton {

         private Singleton(){}// 在外部用 new 关键字会报错,只供内部使用

         // 注意这是 private 只供内部调用

         private static Singleton instance = new Singleton();

         // 这里提供了一个供外部访问本 class 的静态方法,可以直接访问  

         public static Singleton getInstance() {

                return instance;

      }

      public void say(String str){

                System.out.println(str);

      }

}

 

class commonClass{

         public commonClass(){

                   System.out.println(" 这是一个普通类 ");

         }      

}

public class mySingleton{

         public static void main(String args[])

         {

                   Singleton sl = Singleton.getInstance();

                   Singleton sl2 = Singleton.getInstance();

                   sl.say("hello,world!");

                   sl2.say("hello,world again!");

                   System.out.println(sl==sl2);// 输出 true, 说明 sl,sl2 指向同一个实例

                  

                   commonClass cC = new commonClass();

                   commonClass cC2 = new commonClass();

                   System.out.println(cC==cC2);// 输出 false, 说明 cC,cC2 分别指向不同的实例

                  

         }

}

4 .有一个 1001 个元素的数组 a[n] ,每个元素都在 1 1000 这些整数中取值,其中有一个数值重复了,现在要设计一个算法找出这个数字,且每个元素只能被访问一次。不能用辅助的存储容器。

解答:

This number = (a[0]+a[1]+a[3]+ …… a[1000])-(1+2+3+ …… +1000)

servlet 生命周期以及 servlet 基本构架

解答:

servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service destroy 方法表达。

Servlet 的基本架构:
public class ServletName extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
         ServletException, IOException {
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
         ServletException, IOException {
    }
}

<!---->5.  <!---->死锁的四个必要条件

解答:

> 互斥条件:某段时间内某资源只能由一个进程使用。

> 请求和保持:进程因请求资源而阻塞时,对已分配给它的资源保持不放。

> 不剥夺条件:资源在未使用完前,不能被剥夺,由使用进程释放。

> 环路条件:发生死锁时,有向图必构成一环路。

7 EJB 是基于哪些技术实现的?并说出 SessionBean EntityBean 的区别, StatefulBean StatelessBean 的区别。

解答:

EJB 包括 Session Bean Entity Bean Message Driven Bean ,基于 JNDI RMI JAT 等技术实现。

SessionBean J2EE 应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他 EJB 组件。 EntityBean 被用来代表应用系统中用到的数据。

对于客户机, SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。

对于客户机, EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

Session Bean 还可以再细分为 Stateful Session Bean Stateless Session Bean ,这两种的 Session Bean 都可以将系统逻辑放在 method 之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。 Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候, EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method 。换言之,很可能数个使用者在执行某个 Stateless Session Bean methods 时,会是同一个 Bean Instance 在执行。从内存方面来看, Stateful Session Bean Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

8 sleep() wait() 有什么区别 ?

解答:

sleep 是线程类( Thread )的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。

wait Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll )后本线程才进入对象锁定池准备获得对象锁进入运行状态。

9 forward redirect 的区别

解答:

forward 是服务器请求资源,服务器直接访问目标地址的 URL ,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect 就是服务端根据逻辑 , 发送一个状态码 , 告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。

10 .冒泡排序算法

解答:

package parent.career.blest;

 

/**

  * 冒泡排序算法演示 : 从小到大排列数组元素

  * 原理:第一个元素和后面的一个元素比较,比较结果再和后面一个元素比较,依次类推

  *       接着,第二个和后面元素比较,依次类推

  */

public class Maopao{

         public static int[] mppx(int[] array){

                   for(int i =0;i<array.length; i++){

                            for(int j=i; j<array.length; j++){

                                     int temp;

                                     if(array[i]>array[j]){

                                               temp = array[i];

                                               array[i] = array[j];    

                                               array[j] = temp;

                                     }

                            }      

                   }

                   return array;

         }

         public static void main(String args[]){

                   // 测试

                   int[] ar ={12,23,1,23,45,11,42,9,45,2,16,77,86,56,43};    

                   ar = mppx(ar);

                   for(int i = 0;i<ar.length;i++){

                            System.out.print(ar[i]+"   ");

                   }      

         }      

}

11 .从键盘接收一个整数,并用递归求其阶乘。

解答:

package parent.career.blest;

import java.io.*;

/**

  * 用递归求阶乘算法

  * 从键盘接收一个整数,然后求其阶乘

  */

  public class DG_JC{

         public static int DG(int n){

                   if(n==1) return 1;

                   else return n*DG(n-1);

         }

         public static void main(String args[]){

                   int n = 0;

                   System.out.print(" 请输入一个整数: ");

                   try{

                            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                            n = Integer.parseInt(br.readLine());

                            br.close();

                   }catch(IOException e){

                            e.printStackTrace();                   

                   }

                   System.out.println(" 阶乘 "+n+"! = "+DG(n));

         }

  }

12 .什么时候使用 assert?

解答: 断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true 。如果表达式计算为 false ,那么系统会报告一个 Assertionerror 。它用于调试目的:

 

   assert(a > 0); // throws an Assertionerror if a <= 0

断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1
应该总是产生一个布尔值。
Expression2
可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

13 谈谈 final, finally, finalize 的区别。

解答:

final— 修饰符(关键字)如果一个类被声明为 final ,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final 的。将变量或方法声明为 final ,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载。

finally— 再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize— 方法名。 Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

14 Collection Collections 的区别。

解答:

Collections 是个 java.util 下的类,它包含有各种有关集合操作的静态方法。
Collection
是个 java.util 下的接口,它是各种集合结构的父接口。

15 .说出 ArrayList,Vector, LinkedList 的存储性能和特性
解答:

 

分享到:
评论

相关推荐

    本库是关于对计算机基础,网络,java基础,Android基础和进阶,kotlin , java面题

    在本库中,涵盖了一系列与计算机基础、网络原理、Java编程、Android开发以及Kotlin相关的学习资料和面试经验。这是一份全面的学习资源,旨在帮助开发者提升技能并为面试做好充分准备。 首先,让我们深入探讨计算机...

    汇丰软件java面试题

    "汇丰软件Java面试题详解" 汇丰软件Java面试题是许多IT行业新人的梦寐以求的岗位,需要考生具备扎实的Java基础知识和良好的编程能力。以下是对汇丰软件Java面试题的详细解析。 笔试部分 笔试部分主要包含三部分:...

    java面100条试题

    java100个面试题,经过千人总结出来的面试题,可以熟悉面试的经历,让你在面试的时候得心应手,在数据分析方面获取更高的优势

    2017java面试题

    "2017java面试题"这个压缩包文件提供了丰富的资源,帮助Java开发者准备面试,深化对Java开发的理解。 文档"Java面试宝典2017.doc"可能包含了以下核心Java知识点: 1. **基础语法**:这包括变量、数据类型、运算符...

    JAVA面试题JAVA面试题JAVA面试题

    Java面试题是每个Java开发者在求职过程中必须面对的挑战,涵盖范围广泛,涉及语言基础、数据结构、算法、多线程、JVM优化、框架应用等多个方面。以下是一些可能出现的Java面试知识点详解: 1. **Java语言基础** - ...

    java面试题总结资料

    这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...

    JAVA笔试题库JAVA笔试题库

    - **AOP(面向切面编程)**:在不修改原有业务逻辑的情况下,实现对业务功能的扩展。 #### 12. MyBatis - **持久层框架**:用于简化JDBC操作,支持自定义SQL查询。 - **ORM映射**:对象关系映射,将对象模型与...

    JAVA面试题2019

    以上是对“JAVA面试题2019”中提及的一些核心知识点的总结,涵盖了项目介绍、Java基础知识、并发编程、Spring框架、Netty框架以及分布式系统等方面的知识点。这些知识点不仅对于准备Java面试至关重要,同时也是Java...

    上海交通银行 Java面试题(上机考)

    8. **Spring框架**:由于Java在企业级应用中广泛使用Spring,因此面试中可能会涉及IoC(控制反转)、AOP(面向切面编程)、Spring Boot、Spring Cloud等相关知识。 9. **数据库操作**:基本的SQL语言,包括查询、...

    java笔试题面试题

    Java作为一门广泛使用的编程语言,其笔试题和面试题涵盖了众多知识点,对于求职者来说,了解并掌握这些知识点是至关重要的。以下将根据标题、描述和标签,详细解析一些常见的Java笔试题和面试题所涉及的Java核心概念...

    JAVA面试题针对三年内经验

    java web面试题.pdf java就业面试题宝典.rar Java面试题.pdf 51CTO下载-程序员面试宝典(全).pdf java华为面试题.pdf java(软件)工程师面试题大全-100%公司笔试题你都能碰到几个 达内笔试题集答案集.pdf 面试题集(全)...

    JAVA-面笔题库 包括大唐、华为等众多公司

    这份"JAVA-面笔题库 包括大唐、华为等众多公司"的资料集合,无疑是为准备Java面试和笔试的开发者提供了一份宝贵的资源。这个压缩包中很可能包含了各大知名公司,如大唐电信和华为技术有限公司等,对Java程序员进行...

    汇总java面试题2019版.rar

    13. **Spring框架**:熟悉Spring的基本概念,如依赖注入,AOP(面向切面编程),以及Spring Boot和Spring Cloud的应用。 14. **并发编程**:理解并发工具类,如Semaphore、CyclicBarrier、CountDownLatch等,以及...

    java面试试题 Java工程师面试试题

    10. **Spring框架**:对依赖注入(DI)和控制反转(IoC)的理解,AOP(面向切面编程)的概念,以及Spring Boot、Spring Cloud的相关知识。 11. **数据库相关**:SQL基本操作,JDBC,事务处理,数据库连接池,NoSQL...

    java企业面试题大全(18个文档)

    9、java面接.pdf。10、JAVA面试题集锦1.pdf。11、JAVA面试题集锦2.pdf。12、java算法面试题.pdf。13、程序员面试宝典.pdf。14、代码与编程题.pdf。15、各大公司面试题.pdf。16、数据库设计规范V1.00.pdf。17、线程...

    java讲题讲题讲题

    "java讲题讲题讲题"的标题和描述虽然简洁,但我们可以从中提炼出一系列与Java学习和实践相关的知识点。 1. **Java基础知识**:Java的基础包括语法、数据类型、控制结构(如if语句、for循环、while循环)、类和对象...

    java外包笔试题两套.zip

    本压缩包"java外包笔试题两套.zip"包含了两套针对Java程序员的笔试题目,分别为"java外包笔试A卷.docx"和"java外包笔试F卷.docx",旨在测试应聘者的基础知识、SQL操作能力以及实际编程技能。 "java外包笔试A卷.docx...

    java经典面视题

    【Java面试题解析】 1. **面向对象的特征** - 抽象:抽象是将复杂问题简化的过程,关注对象的主要特征,忽略不必要的细节。在Java中,抽象主要体现在抽象类和接口中。 - 继承:继承允许一个类(子类)继承另一个...

    2021年JAVA开发面试题.zip

    【标题】"2021年JAVA开发面试题.zip" 提供的是2021年度针对Java开发人员的面试题目集合。这些题目旨在测试应聘者的Java编程基础、面向对象设计、并发编程、数据结构与算法、框架应用以及系统设计等方面的知识和能力...

Global site tag (gtag.js) - Google Analytics