java面试题-20121128

1、http访问百度返回头信息:

  1. Cache-Control:
    private
  2. Connection:
    Keep-Alive
  3. Content-Encoding:
    gzip
  4. Content-Length:
    4033
  5. Content-Type:
    text/html;charset=gbk
  6. Date:
    Wed, 28 Nov 2012 11:40:36 GMT
  7. Expires:
    Wed, 28 Nov 2012 11:40:36 GMT
  8. Server:
    BWS/1.0
  9. Set-Cookie:
    H_PS_PSSID=1424_1540_1543_1582; path=/; domain=.baidu.com

2、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路

“&&”左侧为true时,才计算右侧的逻辑表达式,否则直接输出false
“&”不管左侧输出真假,都的计算右侧的逻辑表达式

3、编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
   //在自己内部定义自己一个实例,是不是很奇怪?
   //注意这是private 只供内部调用
   private static Singleton instance = new Singleton();
   //这里提供了一个供外部访问本class的静态方法,可以直接访问  
   public static Singleton getInstance() {
     return instance;   
   } 

第二种形式: 
public class Singleton { 
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   } 

其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些 

4、说出数据连接池的工作机制是什么?
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

5、forward 和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

6、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

7、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

8、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

9、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

10、abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

11、char型变量中能不能存贮一个中文汉字?为什么? 
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

12、java.io结构




13:java集合结构



14、取盘符下的所有文件名

package com.get.file;

import java.io.File;

/**
* 获取指定目录下所有文件

* @author 

*/

public class getFiles {
  public static void main(String[] args) {
      String dir = "d:\\A\\";
      File directory = new File("d:\\A\\");
      File[] files = directory.listFiles();
      System.out.println("文件总个数:"+files.length);
      for (int i = 0; i < files.length; i++) {
          /**
          * outputFlage1
          * 输出文件名及其绝对路径
          */
          System.out.println("第 "+i + " 个文件:" + files[i].getName() + "--->"
                  + files[i].getAbsolutePath());
          files[i].renameTo(new File(dir + i + files[i].getName()));//修改文件名称
          /**
          * outputFlag2
          * 这里可以看出输出的结果和outputFlag一样,renameTo方法没有改变files[i]的值(内存中数据没变),但是改变了文件名
          */
          System.out.println(files[i].getName());//过的文件名字
      }
  }
 }

15、统计单词出现的次数

//CountWord.java

package com.xie.tencent;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/**
 * 这个类用于统计某个单词在所有文件中出现的次数。
 * @author centre
 *
 */
public class CounterWord {
    FileReader fr;
    private HashMap<String, Integer> hMap=new HashMap<String, Integer>();;
    
 public HashMap<String, Integer> gethMap() {
  return hMap;
 }
 /**
  * 这个构造方法用于持有对方引用
  * @author centre
  * @param f FileReader
  */
 public CounterWord(FileReader f) {
  fr=f;
 }
 /**
  * 根据传入的文件路径,打开文件,同时分析其中的单词个数,
  * 存放进一个HashMap
  * @author centre
  * @param path String 文件的绝对路径
  * @return 返回值貌似没用,在需要时可以接收
  */
 public boolean openFile(String path){
  boolean b=true;
  try {
       FileInputStream fis=new FileInputStream(path);
       BufferedReader br=new BufferedReader(new InputStreamReader(fis));
       try {
         String words=br.readLine();
         while (words!=null) {
          //System.out.println(words);
          String[] word=words.split(",");
          for (int i = 0; i < word.length; i++) {
         addWordCount(word[i]);
     }
          words=br.readLine();
    }
   } catch (IOException e) {
    System.out.println("文件读取异常。");
    e.printStackTrace();
   }
       
  } catch (FileNotFoundException e) {
   System.out.println("没有找到该文件:"+path);
   b=false;
   e.printStackTrace();
  }
  return b;
 }
 /**
  * 将单词放进map,同时统计单词出现的次数
  * @param word String 单词
  */
 private void addWordCount(String word) {
  if (hMap.containsKey(word)) {
   hMap.put(word, hMap.get(word).intValue()+1);
  }else {
   hMap.put(word, 1);
  }
 }



1、ABC三人都喜欢说谎话,有时候也说真话。某天,A指责B说谎话,B指责C说谎话,C说AB两人都在说谎话。后来上帝通过读心术知道其中至少一个人说的是真话。请问谁在说谎话?

  答案:运用假设 排除法 推理得出是B说的是真话,A和C都是说谎话。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值