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.net里面的socket类。
5,消息中间件
只用过阿帕奇的mq,了解太少。
6,svn管理项目
这个其实大家都会只是没法说好,我觉得就是,不同的需求会有不同的需求编号,在被分配到一个需求的时候进行开发,提交代码的时候将需求编号提交到备注里面,这样打包的时候可以根据需求编号来判断这部分是否需要更新。
7,项目流程
其实和上面一样,现有需求后有开发,一个需求编号对应一次开发。
8,基本类型和引用
基本类型就是一个具体的值,直接存储在栈空间里。引用类型是一个对象类型,它是存储在栈空间的一个指向堆空间的地址,对象的具体信息存储在堆空间里,而指向这个对象的地址就是这个引用类型,存储在栈空间里。
9,==和equals
==比较的是引用,比较的是引用的地址值 ,equals方法,是object中的方法,如果不进行重写的话,比较的也是引用的地址值,实际和==一样。
如果自己所写的类中已经重写了equals方法,那么就按照用户自定义的方式来比较两个对象是否相等,如果没有重写过equal方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值。
10,多线程
参考另一篇java多线程学习的博客。https://www.cnblogs.com/m1996/p/10993685.html
11,什么情况出现线程不安全
一个变量同时被两个线程操作的时候就会出现一些不想看到的结果,就是线程不安全的,可用通过与锁或者同步块的方式来解决,线程安全问题一般是由全局变量和静态变量引起的。
12,web.xml配置
springboot里面的web.xml里面都配置哪些内容。
13,用的ext版本
版本号4.2
14,webservice实现
15,内存溢出情况
分为栈溢出和堆溢出
16,用过的设计模式
用过工厂模式,接口的部分,用过单例模式,数据库连接池。
17,日期转换类
SimpleDateFormat
18,数据库池
19,线程池
20,优势
相比应届生多了一些经验,遇到过的问题更多,解决问题的思路更多,抗压能力更强。相比老员工更能吃苦,没有家庭没有压力没有牵挂。(更爱学习新的东西)
21,博客:现在有了。
22,如何学习:一般就是看视频,现在可以再博客上面总结。
23,类和接口的区别
(1)含有抽象方法的类是抽象类,抽象类可以没有抽象方法,同时也可以有实现方法,但是接口中只能有抽象方法。
(2)抽象类是类,java中是单继承多实现,所以抽象类只能被单继承,接口可以被多实现。
(3)抽象类中可以有构造器。
(4)抽象方法要被实现,所以不能使静态的和私有的。
(5)接口的权限修饰符只能是public
(6)接口和抽象类都不能直接实例化,如果要实例化,抽象类的超类必须实现所有父类的抽象方法,子接口的实现要实现所有接口的方法。
我的理解,抽象类和接口的概念大概是,抽象类是把类抽象出来,把一些类的共有特性抽象出来,如果需要实现一些基本功能并且有默认的实现,不需要被多实现,那么使用抽象类。而接口更像是把行为抽象出来,如果要拓展一些新的功能,那么用接口。
抽象类适合用来定义某个领域的固有属性,也就是本质,接口适合用来定义某个领域的扩展功能。
举个例子:把男人和女人的基本属性抽象出来,这个抽象类叫人,男人和女人都只能是人不能是猪,这叫做单继承,但是把男人和女人的行为抽象出来,比如喝水接口、吃饭接口,男人和女人都可以实现很多接口。如果基本功能不断改变就要使用抽象类,如果需要不断拓展功能,就要使用接口。
总结一下:问的都是java基础问题,有些东西问的深了还是会答不上来。面试题大概可以从三个方面去强化:
一、java线程、锁相关的问题
二、java容器的相关问题
三、过去做过项目中的东西要多了解
java真实面试题(1)的更多相关文章
- Java真实笔试题一
PS:昨天去笔试后,发现自己对于JavaSE的基础部分还是有些薄弱的地方,特将昨天自己不是太清楚的地方记录下来,巩固基础. 子类继承父类静态方法的问题 public class Study { pub ...
- java真实面试题(2)
1,递归算法的实行过程,一般来说,可以分为()和()两个阶段,若一个问题的求解既可以用递归也可以用递推时,则往往用(),因为().贪婪法是一种()的算法. 答:递归算法分为递推和回归两个阶段,递推效率 ...
- 一份最贴近真实面试的Java基础面试题
这是一份Java基础知识的面试题.在网上的关于Java的面试题数不胜数,但认真看过感觉大多数都没有实用性,有很多是面试官根本就不会问到的,那些已经脱离了实际开发的技术问题.而这份资料来源自一份个人觉得 ...
- 经典的Java基础面试题集锦
经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...
- JAVA 综合面试题
JAVA 综合面试题 2007-08-12 目录 TOC \o "1-3" \h \z \u Java面试题整理 9 Java面向对象 9 1. super()与this()的区别 ...
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- java必背面试题
JAVA必背面试题和项目面试通关要点 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选 ...
- 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)
第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...
- Java程序员备战“金九银十”必备的面试技巧(附携程Java岗面试题)
一.面试前的准备 1.1 如何准备一场面试1.1.1 如何获取大厂面试机会1.1.2 面试必知 ①. 准备介绍自己 ②. 关于着装 ③ .随身带上自己的成绩单和简历 ④. 如果笔试就提前刷一些笔试题 ...
随机推荐
- C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...
- Guava 是个风火轮之基础工具 (1)
转自:http://www.jamespan.me/blog/2015/02/08/guava-basic-utilities-1/ Guava 是个风火轮之基础工具 (1) 前言 Guava 是 J ...
- Project Euler 13 Large sum
题意:计算出以下一百个50位数的和的前十位数字. /************************************************************************* ...
- HDU1241 - Oil Deposits【DFS】
GeoSurvComp地质调查公司负责探测地下石油储藏. GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块.他们通过专业设备,来分析每个小块中是否蕴藏石油.如果这些蕴藏石 ...
- [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
传送门 题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤 ...
- .net 技术基础
C#常见运算符 一元运算符(+.-.!.~.++.--) 算术运算符(*./.%.+ . – ) 移位运算符(<< .>> ) 关系和类型测试运算符(==.!=.<.&g ...
- awk的总结
入门总结 Awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告.处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可 ...
- php 安装mysql扩展注意事项
1.yum search php-mysql (Linux环境) 这一点,根据具体的情况会遇到不同的搜索结果.我搜索到的结果是:php-mysql.i386 : A module for PHP ap ...
- FreeMarker 语法 访问 pojo 的属性
一.java 代码 @Test public void testFreeMarker() throws Exception { //1.创建一个模板文件 //2.创建一个Configuration对象 ...
- eclipse svn -- - --- appears to be part of a subversion 1.7 or greater....解决方法
安装与svn1.7相兼容的flex Eclipse中的SVN(subclipse) 今天差点被TortoiseSVN1.7和subclipse弄崩溃... 还好最后弄好了,在此把方法写出来,以免其他人 ...