面试题--赵银科技

摘要:
也就是说,同一消息可以根据不同的发送对象采用许多不同的行为模式。实现多态性的技术称为动态绑定,这意味着在执行过程中判断被引用对象的实际类型,并根据其实际类型调用相应的方法。服务器支持三个公共属性:className、port和shutdown。请注意,引擎中主机的名称必须与引擎的defaultHost属性匹配。
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,有哪些标签?
<configuration>,<typeAliases>,<plugins>,<mappers>,<resultMap>,
9.查询语句使用 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>
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十个公共属性。
面试题--赵银科技第1张
19.继承的好处和坏处
优点:1.可以使用父类的所有非私有方法;而且单继承可由接口来弥补。
2.可以继承父类中定义的成员方法以及成员变量,使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。
缺点:1.耦合性太大
2.就是破坏了类的封装性,其实继承一般多用于抽象方法的继承和接口的实现
面试题--赵银科技第2张
21.静态类与单例模式的区别
单例模式比静态类有很多优势:
(1)单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);
(2)单例可以被延迟初始化,静态类一般在第一次加载是初始化;
(3)单例类可以被集成,他的方法可以被覆写;
(4)或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。
 
观点二:(静态方法)静态方法中产生的对象,会随着静态方法执行完毕而释放掉,而且执行类中的静态方法时,不会实例化静态方法所在的类。如果是用singleton, 产生的那一个唯一的实例,会一直在内存中,不会被GC清除的(原因是静态的属性变量不会被GC清除),除非整个JVM退出了。这个问题我之前也想几天,并 且自己写代码来做了个实验。
 
观点三:(Good!)
由于DAO的初始化,会比较占系统资源的,如果用静态方法来取,会不断地初始化和释放,所以我个人认为如果不存在比较复杂的事务管理,用singleton会比较好。
22.面向对象的设计规范
是五大基本原则吗?

免责声明:文章转载自《面试题--赵银科技》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解析Cron表达式使用VsCode的Rest Client进行请求测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32学习笔记——定时器中断(向原子哥学习)

定时器中断 STM32的定时器功能十分强大,有TIME1和TIME8等高级定时器,也有TIME2~TIME5等通用定时器,还有TIME6和TIME7等基本定时器。在本章中,我们将利用TIM3的定时器中断来控制DS1的翻转,在主函数用DS0的翻转来提示程序正在运行。选择难度适中的通用定时器来介绍。 1、STM32通用定时器简介 STM32的通用定时器是一个通...

(转)CentOS系统启动流程图文详解

CentOS系统启动流程图文详解. 原文:http://www.linuxidc.com/Linux/2017-03/141966.htm 熟悉系统启动流程对于我们学习Linux系统是非常有帮助的,虽然基础,但能帮助我们更加理解Linux系统的工作机制。以下将以CentOS发行版为例来介绍Linux系统的启动流程,因为在CentOS 5、CentOS 6以...

【python系统学习13】类(class)与对象(object)

目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 调用类的属性 调用类的方法 示例代码 特殊参数:self 1、代指实例化对象的作用 2、定义方法必传self 3、调用方法传参时sel...

vue 阿里云上传组件

vue 阿里云上传组件 Vue.js上传图片到阿里云OSS存储测试项目git地址 本测试项目启动方法 示例链接 组件配置项 实践解释 本文主要介绍如何 在vue项目中使用web 直传方式上传阿里云oss图片 默认读者对vue框架和阿里云oss有一定的了解整体的流程是加载好阿里云sdk -> 初始化上传客户端client -> 等待文件选择...

centos7下面安装zabbix

先声明一点,在容器里面创建会有文件缺失,就是创建数据库的sql文件没有了,不知道为啥,反复多次都是这样,在虚拟机上面做就不会。 一、环境准备工作。zabbix的安装需要LAMP环境1、关闭SELinux首先查看SELinux状态:方法一:输入命令 /usr/sbin/sestatus -v 结果如下方法二:直接输入命令 getenforce1)、临时关闭(...

go基础9-并发

并发 并发机制,多goroutine间的共享变量,并发问题的分析手段,解决模式,goroutine和线程区别 竞争条件 并发:无法判断多个事件执行的顺序的情形;并发安全:函数,方法,类型在线性执行或并发执行时,都能正确的返回结果;包级别的导出函数一般都是并发安全的.因为只要让变量不在多个goroutine内共享,它就一定是并发安全的;但是如果存在共享变量,...