【赵银科技】来自粉丝投稿的Java开发岗面试真题

最近闲着给大家整理一下投稿的赵银科技面试经验,内容来自一位粉丝,(如果大家有自己的面试经验也可以私信我告诉我)现在分享给大家,也给大家做个参考。一起过来看看吧

由于当事人也没要求把他说出来,记得的就都在这里了这些,都是些真真真题,有的也还在进行中 ,后续有的话会补上-更新!
如果看完后对你有帮助,记得点赞支持一下哦!同时也整理了Java的核心知识点,和网上收集的其他一线公司的面试题,需要的朋友可以点击链接:点这个!点这个 暗号:csdn。
在这里插入图片描述

赵银科技真题:

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); 输出ii1;ii2;i1==i2
分别是true,true,false

5.输出用户表里重名的用户,说sql语句
select myname, count() from tab group by myname having count() > 1

6.说一下ajax
是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

优点:因为是异步的,所以不会阻塞用户操作;
局部刷新,这样就可使网页从服务器请求少量的信息,而不是整个页;

7.servlet是单例么?

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请求,并获得响应数据。

14.多线程共享变量的问题?

15.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十个公共属性。
    在这里插入图片描述

16.继承的好处和坏处
优点:
1.可以使用父类的所有非私有方法;而且单继承可由接口来弥补。
2.可以继承父类中定义的成员方法以及成员变量,使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。

缺点:
1.耦合性太大
2.就是破坏了类的封装性,其实继承一般多用于抽象方法的继承和接口的实现
在这里插入图片描述
17.静态类与单例模式的区别
单例模式比静态类有很多优势:
(1)单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);
(2)单例可以被延迟初始化,静态类一般在第一次加载是初始化;
(3)单例类可以被集成,他的方法可以被覆写;
(4)或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。

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

观点三:(Good!)
由于DAO的初始化,会比较占系统资源的,如果用静态方法来取,会不断地初始化和释放,所以我个人认为如果不存在比较复杂的事务管理,用singleton会比较好。

18.面向对象的设计规范是五大基本原则吗?

好了,面试问题就是这些了,感谢这位朋友的匿名分享,希望大家多多点点赞,支持一下他也同时支持一下我。
同时提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。需要的朋友可以点击链接:点这个!点这个 暗号:csdn。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值