互联网公司校招Java面试题总结及答案——招银科技

部分重复的我已经去掉了,所以显得比较少,其他请参看我的系列文章:
互联网公司校招Java面试题总结及答案——乐视、滴滴、华为
互联网公司校招Java面试题总结及答案——CVTE
互联网公司校招Java面试题总结及答案——美团
( 百度Java面经)互联网公司校招Java面试题总结及答案——百度(目前只是部分总结)
互联网公司校招Java面试题总结及答案——京东
-----------------------------------------------------招银---------------------------------------------
1.pubilc A{ public void test(){} } 
public B extends A{ protected void test(){} }
这样有问题吗?为什么? 
错,
2.public A{ public long test(){} } 
public B extends A{ public int test(){} }
这样有问题吗?为什么? 
错。子类重写父类方法时不能更改返回值类型。
3.多态
多态的定义指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)。
实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
多态的作用消除类型之间的耦合关系
Java中多态的实现方式: 接口实现,继承父类进行方法重写,同一个类中进行方法重载。
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
4.int i=0; Integer i1=0; Integer i2=new Integer(0); 输出i==i1;i==i2;i1==i2
分别是true,true,false 
5.输出用户表里重名的用户,说sql语句
 select myname, count(*) from tab group by myname having count(*) > 1
7.说一下ajax 
是指一种创建交互式 网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
优点:因为是异步的,所以不会阻塞用户操作;
局部刷新,这样就可使网页从服务器请求少量的信息,而不是整个页;
8.就你项目中使用的 MyBatis,有哪些标签?
9.查询语句使用 MyBatis 框架中的 where 标签和不使用 MyBatis 框架的sql语句有啥不同?
where
separator="or">
( classify_id = #{item.classify_id}
and program_id =
#{item.program_id})
      id=#{id}
10.new 实例化过程
寻找类定义 ;
加载类定义,jvm启动时,会用启动类加载器加载,对于用户的class,则会用应用程序类加载器实时加载,所谓实时加载,指的是遇到的时候再加载,而不是预先一次 性加载。关于类加载器,有三级,jvm严格的限制了每一级的加载权限,加载模式为“双亲委托模式”,加载任何类,都先由父加载器加载。
给对象分配内存空间;jvm在内存“堆”中,开辟一个空间,该空间按照MyObject类定义开辟,并将该空间中的各个内存段设置默认值,对应的就是对象的属性初始化默认值。 
对象的初始化顺序 ;给父类静态变量默认值,对父类静态变量赋值,执行父类静态块;给当前类静态变量默认值 ,对当前类静态变量赋值,执行当前类静态块;给父类变量默认值,对父类变量赋值, 执行父类构造函数;给当前类变量默认值,对当前类变量赋值,执行当前类构造函数。
对象构造完成 ;
11. 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())。
12. 反射的所有包,怎实现反射
java中反射的三种方法:
1. 通过Object类的getClass方法来获取
2.使用.class的方式,使用类名加“.class”的方式即会返回与该类对应的Class对象。
3. 使用Class.forName方法,Class有一个著名的static方法forName
13.网络重定向,说下流程
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置。
流程:客户端浏览器访问一个URL,得到的响应状态是3xx的时候,会在响应信息中包含重定向的URL,客户端浏览器需要再向重定向的URL发送HTTP请求,并获得响应数据。
15. servlet是单例么?
16.多线程共享变量的问题?

17.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 ConnectorAJP Connector
  • Context:Context表示在虚拟主机中运行的web应用程序。一个虚拟主机中能够运行多个Context,它们通过各自的Context Path进行相互区分。如果Context Path为"",那么该web应用为该虚拟主机的默认的web应用。Context支持backgroundProcessorDelay、className、cookies、crossContext、docBase、override、privileged、path、reloadable和wrapperClass十个公共属性。
互联网公司校招Java面试题总结及答案——招银科技_第1张图片
19.继承的好处和坏处
优点:1.可以使用父类的所有非私有方法;而且单继承可由接口来弥补。
2.可以继承父类中定义的成员方法以及成员变量,使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。
缺点:1.耦合性太大
2.就是破坏了类的封装性,其实继承一般多用于抽象方法的继承和接口的实现
互联网公司校招Java面试题总结及答案——招银科技_第2张图片
21.静态类与单例模式的区别
单例模式比静态类有很多优势:
(1)单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);
(2)单例可以被延迟初始化,静态类一般在第一次加载是初始化;
(3)单例类可以被集成,他的方法可以被覆写;
(4)或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。

观点二:( 静态方法)静态方法中产生的对象,会随着静态方法执行完毕而释放掉,而且执行类中的静态方法时,不会实例化静态方法所在的类。如果是用singleton, 产生的那一个唯一的实例,会一直在内存中,不会被GC清除的(原因是静态的属性变量不会被GC清除),除非整个JVM退出了。这个问题我之前也想几天,并 且自己写代码来做了个实验。

观点三:(Good!)
由于DAO的初始化,会比较占系统资源的,如果用静态方法来取,会不断地初始化和释放,所以我个人认为如果不存在比较复杂的事务管理,用singleton会比较好。
22.面向对象的设计规范
是五大基本原则吗?

你可能感兴趣的:(找工作相关)