面试题总结1-50

本文总结了Java编程中的基础语法和概念,包括抽象方法的使用、数据类型转换、JSP内置对象和动作的介绍、HTTP方法GET与POST的区别、数据库操作函数以及设计模式等核心知识点,是面试备考的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下列哪一种叙述是正确的()

  A. abstract修饰符可修饰字段、方法和类

  B.抽象方法的body部分必须用一对大括号{ }包住

  C.声明抽象方法,大括号可有可无

  D.声明抽象方法不可写出大括号

  答案:D

abstract不能修饰字段,抽象方法不用实现,不能用{}.


2.指出正确的表达式 C 

A byte=128;  

B Boolean=null;  

 C long l=0xfffL;  

D double=0.9239d;


3.public class Person{       C
static int arr[] = new int[5];
public static void main(String a[]) {

System.out.println(arr[0]); }  
}

A、编译时将产生错误        B、编译时正确,运行时将产生错误 C、输出零            D、输出空


4.不能用来修饰interface的有:()A C D

A.private  B.public  C.protected  D.static


5.jsp有哪些内置对象?作用分别是什么?

JSP共有以下9种基本内置组件

 1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了 解到客户的需求,然后做出响应。

 2、response对象 响应客户请求的有关信息

 3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个      WebApplication开始,直到客户端与服务       器断开连接为止。

 4、out对象   它是JspWriter类的实例,是向客户端输出内容常用的对象

 5、page对象   它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例

 6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭

 7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。

 8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问

 9、config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的


6.jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记


7.post与get的区别?

 1.post传输数据时,不在URL中显示出来,而get方法要在URL中显示

 2.post传输数据量大,而get传输数据小

 3.post向服务器传数据,get从服务器取数据

 4.post方式要比get方式安全


8.函数cast(2.5 as int)/2 的执行结果是:1.5


9.FLOOR——对给定的数字取整数位
SQL> select floor(2345.67) from dual;

FLOOR(2345.67)
--------------
2345

CEIL-- 返回大于或等于给出数字的最小整数
SQL> select ceil(3.1415927) from dual;

CEIL(3.1415927)
---------------
4

ROUND——按照指定的精度进行四舍五入
SQL> select round(3.1415926,4) from dual;

ROUND(3.1415926,4)
------------------
3.1416

TRUNC——按照指定的精度进行截取一个数
SQL> select trunc(3.1415926,4) from dual;

ROUND(3.1415926,4)
------------------
3.1415


10.在oracle的聚合函数中,合计函数、最大值函数、最小值函数、平均值函数分别是 count 、max、min、avg


11.数据库系统的核心是 数据库管理系统


12.

 构造方法普通成员变量普通方法静态方法变量访问类型
抽象类可以可以可以可以任意
接口不可以不可以不可以不可以只能为 public static

 1.但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型

 2.接口中定义的变量只能是public  static类型,并且默认为public static类型

 3. 接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用


13.&与&&的区别

&按位与  &&逻辑与

&两边都要判断

&&只要前面是false就输出false,而不继续判断后面


14.error和exception有什么区别?

  error:系统级错误或程序不必处理的异常,比如:内存资源不足 这种错误无能为力

  exception:需要捕捉或需要程序处理的异常,因为程序设计瑕疵或外部输入引起的异常,程序必须处理

  exception 分为: 运行时异常:因为错误的操作引起的

                             受检查异常:程序可以自我的处理

15.JavaScript标准中规定了6种类型:Undefined,Null,Boolean,String,Number,Object

16.String,StringBuffer,StringBuilder区别:

执行速度:Stringbuilder->StringBuffer->String

String:不可改变  Stringbuffer和StringBuilder可以改变 

StringBuffer单线程 线程安全 可以实现同步  StringBuilder多线程  线程不安全

17.WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

18.B/S 与C/S的联系与区别?

C/S Client/Server 局域网内高性能的数据库交互,安装专用客户端软件。

B/S Browser/Server 浏览器与数据库进行交互。

20.IOC和AOP的概念以及在spring中是如何应用的

IOC 控制反转 容器通过配置文件注入就是IOC的思想。  利用反射机制实例化类

AOP 面向切面编程 在不修改代码的情况下,给程序动态同意添加的一种技术。 利用动态代理机制

21.简述RBACRole-Based Access Control)

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。


22.解决hibernate 1+n 问题?

 1.延迟加载 2.默认fetch=“select” 把fetch设置成“join” 但失去了延迟加载的特性

Hibernate的两个类设置了manyToOne(oneToMany)之后,在查询的时候,由于N 对1的一方默认的fetch=FetchType.EAGER,所以会把被关联          的对象一起取出来
      解决方法一:设置fetch=FetchType.LAZY,这种方法在合适的时候(具体使用到对象时)还是会发出select语句。
      解决方法二:
                         //List<Student> students= (List<Student>)session.createCriteria(Student.class).list();
                         List<Student> students= (List<Student>)session.createQuery("from Student").list();
                         也就是用session.createCriteria()做查询,而不是用createQuery。
       解决方法三:使用BatchSize(size=5)方法,他会发出1+N/5条select语句。
       解决方法四:使用join fetch做外连接查询。from Topic t left join fetch t.category c


23.写一个单例模式的类出来:

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



24.写出冒泡排序:

冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。

算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)


复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)

[java]  view plain copy
  1. /** 
  2.  * 冒泡排序 
  3.  * 
  4.  */  
  5. public class Bubble {  
  6.   
  7.     public static void main(String[] args) {  
  8.         int[] array = { 49386597761327 };  
  9.         buddleSort(array);  
  10.         for (int i = 0; i < array.length; i++) {  
  11.             System.out.println(array[i]);  
  12.         }  
  13.     }  
  14.   
  15.     public static void buddleSort(int[] array) {  
  16.         int temp;  
  17.         for (int i = 0; i < array.length; i++) {//趟数  
  18.             for (int j = 0; j < array.length - i - 1; j++) {//比较次数  
  19.                 if (array[j] > array[j+1]) {  
  20.                     temp = array[j];  
  21.                     array[j] = array[j+1];  
  22.                     array[j+1] = temp;  
  23.   
  24.                 }  
  25.             }  
  26.         }  
  27.     }  
  28. }  


25.策略模式:定义了算法族,并分别封装起来,让它们之间可以相互替换。

   观察者模式:定义了对象间一对多依赖

26.CI服务器:持续集成服务器

     1、发现bug更加容易;
     2、 提供快速的反馈;
     3、 隔离问题;
     4、 确保一个持续可靠的build

27.单元测试的好处:
 1.一种验证行为 2. 设计行为 3. 编写文档的行为 4.回归性
  目的:1.保证代码质量 2.保证代码可维护 3.保证代码可扩展 
28.开源项目:1.sitemsh 2.springside 3.poi 4 lucene 5 ehcache 6 dom4j  
29.spring的优点:七点
  1.ioc  对象依赖关系交给spring
  2.aop 便于面向切面编程
  3.提供事务管理
  4.消除过多的单例 
  5.很好的集成主流框架
  6.非侵入式的
  7.易于单元测试
30.struts2的优点:7点
  1.MVC结构清晰
  2.OGNL参数传递
  3.全局结果和声明异常
  4.强大的拦截器  例如:异常,上传,验证
 5.易于测试
 6.易于扩展插件
7.类型转换器
31.hibernate的优点:
  1.支持各种关系型数据库,可以跨平台
  2.sql基本自动生成,特殊情况写一些hql
  3.非侵入式,是轻量级框架
  4.支持缓存机制
缺点:不适合批量处理
32.springmvc与strtus2的区别:
  1.springmvc 实现100%零配置
   2.struts2基于类的拦截  springmvc基于方法的拦截
  3.spirngmvc 方法之间是独立的,request response 不是共享的
           struts2   虽然方法之间也是独立的,但action的变量时共享的,比较混乱
  4.struts2 对rquest session 进行了线程安全同时也消耗了内存。
33.拦截器和过滤器的区别:5点
  1.拦截器 基于java反射机制                               过滤器 基于函数回调
         2.拦截器 不依赖于servlet容器                           过滤器 依赖servlet容器
         3.拦截器 可以被调用多次                                 过滤器 在容器初始化时只能被调用一次
         4.拦截器 只对action请求起作用                         过滤器 对所有的请求都起作用
         5.拦截器 可以访问action上下文、值栈里的对象  过滤器 不可以
34.struts2的5个默认拦截器:
  1.i18n   2.fileupload 3.chain 4.alias 5.cookies 6.checkbox
35.struts2 的result中哪几种类型?10种 写出才常用的几种
1.dispatcher 2.redirect 3 redirectaction 4.plaintext 5.stream 6.chain 
36.spring的核心类有哪些?
1.BeanFactory:产生一个新的实例,可以实现单例模式
       2.BeanWrapper:提供统一的get及set方法
       3.ApplicationContext:提供spring框架的实现,包括BeanFactory的所有功能
37.什么是线程安全?线程安全是怎么完成的(原理)? 
       线程安全就是说多线程访问同一代码,不会产生不确定的结果。编写线程安全的代码是低依靠线程同步。
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
      38.hashmap为什么线程不安全
    当然了如果只是读,没有写肯定没有并发的问题了。改换Hashtable或者ConcurrentHashMap肯定也是没有问题了

        addEntry 导致线程不安全


     39.hibernate获取数据连接的过程
1、先获得Session,然后从Session中获得连接
      session.connection();
     2、通过ConnectionProvider来获得连接
    ConnectionProvider cp = ConnectionProviderFactory.newConnectionProvider (cfg.getProperties());
     cp.getConnection();
40.Arraylist和linklist
1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
41.线程5种状态
1.新建状态(New) 2.就绪状态(Runnable)  3.运行状态(Running)4. 阻塞状态(Blocked)  5. 死亡状态(Dead)
42.问题1:mysql索引类型normal,unique,full text的区别是什么?

           normal:表示普通索引
           unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
           full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX           也可以。
         总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
PRIMARY, INDEX, UNIQUE 这3种是一类
       PRIMARY 主键。 就是 唯一 且 不能为空。
       INDEX 索引,普通的
      UNIQUE 唯一索引。 不允许有重复。
      FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。
43.spring事务管理
1.声明式事务 2.全注解事务
44..如果你现在CPU100%了,你如何查询是哪个进程,哪个线程,哪行代码占用CPU过高?
使用jstack工具dump出问题的那台服务器的栈信息
45.通过端口号查找jvm进程怎么查?
  1、Windows平台
      在windows控制台窗口下执行:
             netstat -nao | findstr "9010"
             TCP 127.0.0.1:9010 0.0.0.0:0 LISTENING 3017
             你看到是PID为3017的进程占用了9010端口,如果进一步你想知道它的进程名称,你可以使用如下命令:
              tasklist | findstr "3017"
        如果你想杀死这个进程,你当然可以用前面描述的那种方法,在任务管理器里把它KILL了,但如果你喜欢高效一点,那么用taskkill命令就可以了。
               taskkill /pid 3017
        2、Linux
         netstat -pan | grep 9010
   kill -9 3017
根据项目名查找pid
ps -ef|grep 项目名
kill -9 pid
46.Cookie的作用域
Cookie的作用域:Domain为设置Cookie的有效域,Path限制有效路径_ASp.net
47.Https为什么费时
http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包,https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,所以一共是12个包。SLL一般采用RSA非对称加密
48.mysql 分区
1)相对于5.1,MySQL5.5在表分区功能上有很大改善,主要是查询性能上的明显改善;
       2)分区速度的提升类似建了索引,所以如果需要分区的字段已经建了索引,一般没有必要在做分区;
       3)mysql的表分区还有一个重要的功能就是可以将表的各分区放到不同的磁盘上,以增加表容量;
       4)range分区比hash分区的查询性能高;
49.SpringMVC运行原理
     1) 客户端请求提交到DispatcherServlet
     2.)由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
     3) DispatcherServlet将请求提交到Controller
    4) Controller调用业务逻辑处理后,返回ModelAndView
    5)DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
    6) 视图负责将结果显示到客户端
50.CocurrentHashMap和Hashtable的区别
Hashtable和ConcurrentHashMap有什么分别呢?它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map。 同步的集合类(Hashtable和Vector),同步的封装类(使用Collections.synchronizedMap()方法和Collections.synchronizedList()方法返回的对象)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值