svnjava⾯试题_java真实⾯试题(1)
2019年春杭州邦盛科技java⾯试题。
1,java基本类型
byte,char,short,int,long,float,double,boolean。
2,重写重载
重写,⼦类重写⽗类的⽅法,⽅法名、参数类型、返回类型都和⽗类相同,所涉及到的权限修饰符必须⼤于被重写的⽅
法,public>private>default>protect,重写⽅法不能出现新的检查异常,或者⽐被重写⽅法更宽泛的检查型异常。
重载,发⽣在⼀个类中,⽅法名相同,参数不同,返回值不作为判定条件。
我个⼈对重写和重载的理解就是:因为不论重写和重载都是指的⽅法名相同的,所以当调⽤⽅法的时候,到底实际调⽤的哪个⽅法,重写和重载的判定条件是不同的,重写是根据实例,如果new出来的实
例是那个类就调⽤哪个类的⽅法,是⽗类就调⽤⽗类的⽅法,是某⼀个⼦类,就调⽤这⼀个⼦类的⽅法,所以是运⾏时多态的表现,因为运⾏了才知道这个实例到底是哪个。重载是根据参数列表来判断,java是严格参数匹配的,参数列表完全符合的就调⽤此⽅法,叫做编译时多态。具体为啥叫做编译时多态,可能是因为运⾏时多态被重写给占了吧,来看⼀下标准答案。
⽅法的重载和重写都是实现多态的⽅式,区别在于前者实现的是编译时的多态性,⽽后者实现的是运⾏时的多态性。重载发⽣在⼀个类中,⽅法名相同但是参数列表不同则视为重载;重写发⽣在⼦类与⽗类之间,重写要求⼦类被重写⽅法与⽗类被重写⽅法有相同的参数列表,有兼容的返回类型,⽐被重写⽅法更好访问,不能⽐⽗类被重写⽅法声明更多的异常(⾥⽒代换原则)。
这张图是百度图⽚,所谓⾥⽒代换原则我的理解就是,能⽤基类的地⽅,必须能⽤超类,别管合不合适,反正是能⽤,因为超类是在基类的基础⾏为上增加新的⾏为。
3,hashmap和hashtable
这个具体要看好多源码才能彻底理解,⾯试的时候⾯试官可能会问hashmap和hashtable的区别,也可能稳hashmap和treemap的区别,有好多种⽂法,这个我会写⼀个关于java容器的源码解析。
这个问题回答主要我觉得只要回答这两个就⾏,hashmap是线程不安全的,hashtable是线程安全的,线程安全的东西⼀般在单线程情况下就⽐较慢,线程不安全的在单线程情况下就⽐较快,但是多线程情况下就⽐较慢,我猜可能是因为不安全所以混乱、没秩序。
4,socket
问我的是⼯作的时候如何⽤到的socket通信,我是在接⼝调⽤通信的时候,都会先调⽤⼀个通信类AbstractCommunicateClient,这是个基类,然后在⼦类⾥⾯重写sendmsg()⽅法,在⽅法⾥⾯根据不同的通信⽅式调⽤不同的实例,⽐如socket通信就调⽤⼀个socketclient 这样⼀个实例,在socketclient⾥⾯实际上最终调⽤的也是java⾥⾯的socket类。
5,消息中间件
只⽤过阿帕奇的mq,了解太少。
6,svn管理项⽬
这个其实⼤家都会只是没法说好,我觉得就是,不同的需求会有不同的需求编号,在被分配到⼀个需求的时候进⾏开发,提交代码的时候将需求编号提交到备注⾥⾯,这样打包的时候可以根据需求编号来判断这部分是否需要更新。
7,项⽬流程
其实和上⾯⼀样,现有需求后有开发,⼀个需求编号对应⼀次开发。
8,基本类型和引⽤
基本类型就是⼀个具体的值,直接存储在栈空间⾥。引⽤类型是⼀个对象类型,它是存储在栈空间的⼀个指向堆空间的地址,对象的具体信息存储在堆空间⾥,⽽指向这个对象的地址就是这个引⽤类型,存储在栈空间⾥。
9,==和equals
==⽐较的是引⽤,⽐较的是引⽤的地址值 ,equals⽅法,是object中的⽅法,如果不进⾏重写的话,⽐较的也是引⽤的地址值,实际和==⼀样。
如果⾃⼰所写的类中已经重写了equals⽅法,那么就按照⽤户⾃定义的⽅式来⽐较两个对象是否相等,
如果没有重写过equal⽅法,那么会调⽤⽗类(Object)中的equals⽅法进⾏⽐较,也就是⽐较地址值。
10,多线程
11,什么情况出现线程不安全
⼀个变量同时被两个线程操作的时候就会出现⼀些不想看到的结果,就是线程不安全的,可⽤通过与锁或者同步块的⽅式来解决,线程安全问题⼀般是由全局变量和静态变量引起的。
12,l配置
springboot⾥⾯的l⾥⾯都配置哪些内容。
13,⽤的ext版本
版本号4.2
14,webservice实现
15,内存溢出情况
分为栈溢出和堆溢出
16,⽤过的设计模式
⽤过⼯⼚模式,接⼝的部分,⽤过单例模式,数据库连接池。
17,⽇期转换类
SimpleDateFormat
18,数据库池
19,线程池
20,优势
相⽐应届⽣多了⼀些经验,遇到过的问题更多,解决问题的思路更多,抗压能⼒更强。相⽐⽼员⼯更能吃苦,没有家庭没有压⼒没有牵挂。(更爱学习新的东西)
21,博客:现在有了。
22,如何学习:⼀般就是看视频,现在可以再博客上⾯总结。
23,类和接⼝的区别
(1)含有抽象⽅法的类是抽象类,抽象类可以没有抽象⽅法,同时也可以有实现⽅法,但是接⼝中只能有抽象⽅法。
java重写和重载的区别(2)抽象类是类,java中是单继承多实现,所以抽象类只能被单继承,接⼝可以被多实现。
(3)抽象类中可以有构造器。
(4)抽象⽅法要被实现,所以不能使静态的和私有的。
(5)接⼝的权限修饰符只能是public
(6)接⼝和抽象类都不能直接实例化,如果要实例化,抽象类的超类必须实现所有⽗类的抽象⽅法,⼦接⼝的实现要实现所有接⼝的⽅法。
我的理解,抽象类和接⼝的概念⼤概是,抽象类是把类抽象出来,把⼀些类的共有特性抽象出来,如果需要实现⼀些基本功能并且有默认的实现,不需要被多实现,那么使⽤抽象类。⽽接⼝更像是把⾏为抽象出来,如果要拓展⼀些新的功能,那么⽤接⼝。
抽象类适合⽤来定义某个领域的固有属性,也就是本质,接⼝适合⽤来定义某个领域的扩展功能。
举个例⼦:把男⼈和⼥⼈的基本属性抽象出来,这个抽象类叫⼈,男⼈和⼥⼈都只能是⼈不能是猪,这叫做单继承,但是把男⼈和⼥⼈的⾏为抽象出来,⽐如喝⽔接⼝、吃饭接⼝,男⼈和⼥⼈都可以实现很多接⼝。如果基本功能不断改变就要使⽤抽象类,如果需要不断拓展功能,就要使⽤接⼝。
总结⼀下:问的都是java基础问题,有些东西问的深了还是会答不上来。⾯试题⼤概可以从三个⽅⾯去强化:
⼀、java线程、锁相关的问题
⼆、java容器的相关问题
三、过去做过项⽬中的东西要多了解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论