牛客网Java测试题解析

这篇博客详细解析了牛客网上关于Java的测试题目,涵盖了JVM内存模型、JDBC Statement的使用、Spring事务传播特性、CGI与Servlet的区别以及Struts1与Struts2的对比。内容还包括AWT和Swing、数据库驱动加载、线程的sleep和wait方法、Integer.valueOf的行为以及Struts的MVC模式等Java基础知识点。

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

另有:java基础总结

1.String、StringBuffer、StringBuilder

String字符串是常量,其值不能改变
StringBuilder是线程不安全的,速度更快
StringBuffer是线程安全的,速度比StringBuilder慢

2 .下面有关JVM内存,说法错误的是?C

  1. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
  2. 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
  3. 方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的-------应是(不隔离,线程共享)
  4. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

 

3.下面有关jdbc statement的说法错误的是 C

 
  • A.JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
  • B.对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”
  • C.PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值
  • D.PreparedStatement可以阻止常见的SQL注入式攻击
 

       

 解析:C:JDBC statement中的PreparedStatement的占位符对应着即将与之对应当值,且一个占位符只对应一个值,如能对应多个会引起混淆。sql语句是确定的,一个占位符必定只对应一个值

 

一些拓展说明

1.Statement、PreparedStatement和CallableStatement都是接口(interface)。  
2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。  
3.  

  •  Statement接口提供了执行语句和获取结果的基本方法;  
  • PreparedStatement接口添加了处理 IN 参数的方法;  
  • CallableStatement接口添加了处理 OUT 参数的方法。  

4.     

  • Statement:  普通的不带参的查询SQL;支持批量更新,批量删除;  
  • PreparedStatement: 是预编译的,可变参数的SQL,编译一次执行多次,效率高;  安全性好,有效防止Sql注入等; 支持批量更新,批量删除;  代码的可读性和可维护性;
  • CallableStatement:  继承自PreparedStatement,支持带参数的SQL操作; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值