问&答

 

1. interface 和 abstract 的区别?
abstract 可不可以继承 interface, interface 可不可以继承 interface?
答案:一个是接口,一个是虚函数 java中的接口相当C++中纯虚函数
也就是一个也不实现,具体是在子类中实现,这体现了多态性
  同时java接口也是java实现多重继承的一个方法
  1.interface的所有函数都是abstract的;
  2.interface的数据成员默认都是public static final的;
  3.Interface可以被多继承,abstract class单继承

  interface是接口,abstract class是抽象类 主要区别:
 1、接口可以多重implement(实现),抽象类只能单一extends(继承)
 2、接口内只能是功能的定义,抽象类中可以包括功能的定义和功能的实现。
 3、接口字段定义默认为public static final,而抽象类的则默认为friendly。

2. HashMap 和 Hashtable 的区别?
答案:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

3. 线程常用的方法是什么?
Thread类的常用方法:
static Thread currentThread() //静态方法,通过这个方法可以获得主线程的引用,从而达到操作主线程的目的。
static int activeCount()      //静态方法,获得当前活动线程数量
long getId()                  //获得当前线程id
String getName()        //获得当前线程名字
int getPriority()    //获得优先级
boolean isAlive()    //当前线程是否处于活动状态。
boolean isDaemon()   //是否为守护线程
void run()  //run()方法,我们用线程,主要就是对run()方法的重写
void start()   // 使该线程开始执行;Java 虚拟机调用该线程的run() 方法。
void sleep()   //使当前线程休眠,以执行其他线程,如Thread.sleep(1000) 休眠1秒

4. GC是什么?常用的两种方法是什么?
答案:System.gc()用来强制立即回收垃圾,即释放内存。
java对内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用时释放内存,java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,当然也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存.
  gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。

5. Sleep()和wait()的区别?
 搞线程的最爱sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

6. Servlet中forward()和redirct()的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

7. EJB和JavaBean都是什么?
答案:
javabean是客户端组件,EJB是服务器端组件。
其实ejb与javaBean的最根本区别是:分布性。这是关键!!!
    Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。
  
8. EJB都有哪些构成?
答案:Session Bean, Entity Bean, Message Driven Bean.

9. Servlet的生命周期,比CGI有什么优点?
    web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用 service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
    Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。

10. Override 和 Overload的区别?
overload和override的区别
override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。 
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。

11. JSP的组成部分?
答:JSP共有以下9种基本内置组件:
  request   用户端请求,此请求会包含来自GET/POST请求的参数
  response   网页传回用户端的回应
  pageContext   网页的属性是在这里管理
  session   与请求有关的会话期
  application   servlet正在执行的内容
  out    用来传送回应的输出
  config   servlet的构架部件
  page   JSP网页本身
  exception   针对错误网页,未捕捉的例外


12. 写一个JDBC的程序.

 try{
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 }
 catch(ClassNotFoundException e)
{
 System.out.print("类找不到");
 }
 try{
 Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login","password");
 Statement stmt = con.createStatement();
 ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
 while (rs.next())
        {
  int x = rs.getInt("a");
  String s = rs.getString("b");
  float f = rs.getFloat("c");
 }
        con.close();
  }catch(SQLException e)
 {
 out.println("SQL异常");
 }
 

13. MVC架构的构成和各部分的作用?
  一个MVC应用程序中模型、视图、控制器三部分。
  a.在MVC结构中,模型(Model)代表应用程序的数据(data)和用于控制访问和修改这些数据的业务规则(business rule)。通常模型被用来作为对现实世界中一个处理过程的软件近似,当定义一个模型时,可以采用一般的简单的建模技术。

  b.当模型发生改变时,它会通知视图(View),并且为视图提供查询模型相关状态的能力。同时,它也为控制器(Controller)提供访问封装在模型内部的应用程序功能的能力。

  c.一个视图(View)用来组织模型的内容。它从模型那里获得数据并指定这些数据如何表现。当模型变化时,视图负责维持数据表现的一致性。视图同时将用户要求告知控制器(Controller)。

  d.控制器(Controller)定义了应用程序的行为;它负责对来自视图的用户要求进行解释,并把这些要求映射成相应的行为,这些行为由模型负责实现。在独立运行的GUI客户端,用户要求可能是一些鼠标单击或是菜单选择操作。在一个Web应用程序中,它们的表现形式可能是一些来自客户端的GET或POST的HTTP请求。模型所实现的行为包括处理业务和修改模型的状态。根据用户要求和模型行为的结果,控制器选择一个视图作为对用户请求的应答。通常一组相关功能集对应一个控制器。

14. 存储过程和函数的区别?

    本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
: Modbus是一种通信协议,用于在不同设备之间进行数据传输。它有两种常见的变体:Modbus TCP/IP和Modbus RTU over TCP/IP。对于Modbus TCP/IP,可以使用多种工具进行连接,例如上位机软件(如NetAssist和Modbus Poll)以及Java编程语言中的工具包(如com.digitalpetri.modbus modbus-master-tcp)。可以建立socket或者nio链接,但需要解析格式,包括报文头、校验码、从机地址和功能码等。\[1\] 对于Modbus RTU over TCP/IP,通信仍然使用TCP,但数据是RTU格式的数据。因此,不能使用常规的Modbus TCP建立链接的代码。可以采用socket或者nio去建立链接,同样需要解析从机地址、功能码、校验位和数据等。与Modbus TCP类似,可以使用工具如NetAssist和Modbus Poll进行连接。\[2\] 关于Modbus的常见题,有一些常见的解。例如,RS485总线连接通常采用什么样的线缆,为什么要采用手拉手结构,为什么要屏蔽接地,以及如何消除通讯线上的干扰等。这些题的具体解可以在HMS工业网络的博客或CSDN博客上找到。\[3\] #### 引用[.reference_title] - *1* *2* [modbus-rtu和modbus-tcp和modbus-rtu-Over-tcp/ip](https://blog.csdn.net/u010953880/article/details/124412909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Modbus的常见题解:多台设备如何连接?为什么要加终端电阻?RS485总线可挂接多少个设备?在RS485通讯中...](https://blog.csdn.net/Jessiewang93/article/details/124197074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值