欢迎来到知了堂!
知了堂-电话号码 028-87058185

招银科技校招Java面试题总结及答案-知了堂

招银科技校招Java面试题总结及答案


  1..public A{ public long test(){} }
  public B extends A{ public int test(){} }
  这样有问题吗?为什么?
  错。子类重写父类方法时不能更改返回值类型。
  2.多态
  多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)。
  实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  多态的作用:消除类型之间的耦合关系。
  Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
  多态存在的三个必要条件
  一、要有继承;
  二、要有重写;
  三、父类引用指向子类对象。
  父类的引用指向了自己的子类对象。
  父类的引用也可以接收自己的子类对象。
  3.输出用户表里重名的用户,说sql语句
  select myname, count(*) from tab group by myname having count(*) > 1
  4.说一下ajax
  是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
  优点:因为是异步的,所以不会阻塞用户操作;
  局部刷新,这样就可使网页从服务器请求少量的信息,而不是整个页;
  5.就你项目中使用的 MyBatis,有哪些标签?
  6.查询语句使用 MyBatis 框架中的 where 标签和不使用 MyBatis 框架的sql语句有啥不同?

where
<foreach item="item" index="index" collection="list"
separator="or">
( classify_id = #{item.classify_id}
and program_id =
#{item.program_id})
</foreach>
<where>
      <if test="id != null ">id=#{id}</if>

  7.new 实例化过程
  寻找类定义 ;
  加载类定义,jvm启动时,会用启动类加载器加载,对于用户的class,则会用应用程序类加载器实时加载,所谓实时加载,指的是遇到的时候再加载,而不是预先一次 性加载。关于类加载器,有三级,jvm严格的限制了每一级的加载权限,加载模式为“双亲委托模式”,加载任何类,都先由父加载器加载。
  给对象分配内存空间;jvm在内存“堆”中,开辟一个空间,该空间按照MyObject类定义开辟,并将该空间中的各个内存段设置默认值,对应的就是对象的属性初始化默认值。
  对象的初始化顺序 ;给父类静态变量默认值,对父类静态变量赋值,执行父类静态块;给当前类静态变量默认值 ,对当前类静态变量赋值,执行当前类静态块;给父类变量默认值,对父类变量赋值, 执行父类构造函数;给当前类变量默认值,对当前类变量赋值,执行当前类构造函数。
  对象构造完成 ;

招银科技校招Java面试题总结及答案

  8.socket实现过程,具体用的方法;怎么实现异步socket.、
  Socket编程基本就是create,listen,accept,connect,read和write等等。在建立连接前,必须知道对方的IP地址和端口号。一个指定的端口号不能被多个程序共用。
  1:加载套接字库,创建套接字(WSAStartup()/socket());
  2:绑定套接字到一个IP地址和一个端口上(bind());
  3:将套接字设置为监听模式等待连接请求(listen());
  4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());
  5:用返回的套接字和客户端进行通信(send()/recv());
  6:返回,等待另一连接请求;
  7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
  客户端编程的步骤:
  1:加载套接字库,创建套接字(WSAStartup()/socket());
  2:向服务器发出连接请求(connect());
  3:和服务器端进行通信(send()/recv());
  4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
  9.反射的所有包,怎实现反射
  java中反射的三种方法:
  1. 通过Object类的getClass方法来获取
  2.使用.class的方式,使用类名加“.class”的方式即会返回与该类对应的Class对象。
  3. 使用Class.forName方法,Class有一个著名的static方法forName
  10.网络重定向,说下流程
  重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置。
  流程:客户端浏览器访问一个URL,得到的响应状态是3xx的时候,会在响应信息中包含重定向的URL,客户端浏览器需要再向重定向的URL发送HTTP请求,并获得响应数据。
  11. servlet是单例么?
  是
  12.Tomcat的结构
  就按server.xml中的层次结构来答
  Tomcat 体系结构中的六个主要概念:
  Server:Server代表整个容器(Container)。它可以包含一个或多个Service,还可以包含一个GlobalNamingResources。Server支持className,port和shutdown三个公共属性。
  Service:Service中可以含有一个或多个Connector,但只能含有一个Engine。这使得不同的Connector可以共享同一个Engine。同一个Server中的多个Service之间没有相关性。Service支持className和name两个公共属性。
  Engine:Engine负责接收和处理来自它所属的Service中的所有Connector的请求。Engine支持backgroundProcessorDelay、className、defaultHost、jvmRoute和name五个公共属性。
  Host:Host表示一个虚拟主机,并和一个服务器的网络名关联。注意Engine中必须有一个Host的名字和Engine的defaultHost属性匹配。Host支持appBase、autoDeploy、backgroundProcessorDelay、className、deployOnStartup和name六个公共属性。
  Connector:Connector负责接收来自客户端(Client)的请求。比较常见的两个是HTTP Connector和AJP Connector。
  Context:Context表示在虚拟主机中运行的web应用程序。一个虚拟主机中能够运行多个Context,它们通过各自的Context Path进行相互区分。如果Context Path为"",那么该web应用为该虚拟主机的默认的web应用。Context支持backgroundProcessorDelay、className、cookies、crossContext、docBase、override、privileged、path、reloadable和wrapperClass十个公共属性。
13.继承的好处和坏处
  优点:1.可以使用父类的所有非私有方法;而且单继承可由接口来弥补。
  2.可以继承父类中定义的成员方法以及成员变量,使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。
  缺点:1.耦合性太大
  2.就是破坏了类的封装性,其实继承一般多用于抽象方法的继承和接口的实现
14.静态类与单例模式的区别
  单例模式比静态类有很多优势:
  (1)单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);
  (2)单例可以被延迟初始化,静态类一般在第一次加载是初始化;
  (3)单例类可以被集成,他的方法可以被覆写;
  (4)或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。
 

      版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习Java时使用