几个java面试题的简洁回答

java中equal和==的区别:

equal方法除非进行了重写(比如String类和基本类型包装类),否则都是进行对象引用的比较。而==除了比较基本类型时是比较值,其他情况均是比较引用地址。

java适配器模式?

将原来的实现接口所有方法变成了继承实现了接口方法的抽象类(adapter),然后再实现想要的方法。

抽象类和接口的区别

抽象类和普通类的区别只是抽象类包含至少一个抽象方法,并且在声明时要加上个abstract。

接口是一种特殊的抽象类,有以下特点:

成员变量:只能是常量      成员函数:只可以是抽象     构造方法:无

关系和区别:

类与类:继承,单继承

类与接口:单实现,多实现(这个也算是多继承的一种形式)

接口与接口:单继承,多继承(这里也就弥补了java没有多继承的缺陷)

最重要的区别:设计理念

接口类: like a(具有某些特定的功能和方法,比如某个动物实现了跑和吃的接口)

抽象类: is a(属于某个范畴,比如猫属于猫科动物,必须继承自猫科动物这个抽象类,但猫科动物只是个概念没有具体实现)

java多线程:

1.线程安全问题:

产生的原因:多个线程   存在共享数据  对共享数据进行多条语句操作    具体又可以分为两种情况

(1)相同类型的多个线程   如多个窗口卖票   票是共享资源,对其进行卖票操作

(2)不同类型的多个线程   如对人进行命名和获取年龄操作    人对象是共享资源  但进行两种操作,一种获取信息,另一种是设置参数

以上两种情况要想保证线程安全需要进行加锁才能保证安全 (1)对卖票这个操作进行加锁(即run方法中的对共享资源进行操作的语句加synchronized(new object())语句,其中加的锁对象也要保证所有线程用的是一样的)(2)对获取信息和设置参数均加锁,并且加的锁要保证相同!

其实上面两种情况本质是一样的,即对共享资源的操作需要加上唯一的一把锁。

2.线程的死锁问题的描述:

eg:

线程1和线程2分别拥有a锁和b锁,现在线程1想拿到b锁进行b操作,同时线程2也想拿到a锁进行a操作,但是两把锁却分别被对方拥有,此时就会出现二者互相想那对面的锁却不放弃自己锁的现象,导致进入阻塞死锁状态。

笼统的说:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

另一种解释方式: 死锁是因为多线程访问共享资源,由于访问的顺序不当所造成的,通常是一个线程锁定了一个资源A,而又想去锁定资源B;在另一个线程中,锁定了资源B,而又想去锁定资源A以完成自身的操作,两个线程都想得到对方的资源,而不愿释放自己的资源,造成两个线程都在等待,而无法执行的情况。

java网络编程大致流程:

udp 编程

发送端:

1,创建socket对象   构造函数       DatagramSocket()

2.创建数据并打包                      byte[] bts="helloworld".getBytes()

DatagramPacket  dp=newDatagramPacket(bts,bts.getLength,InetAddress.getByName("192.168.1.12"),10086)

3.数据发送                              ds.sent(dp)

4.释放                                    ds.close()

接收端:

1,创建socket对象           DatagramSocket ds=new DatagramSocket(端口号[>1000])

2,创建包裹                    DatagramPacket dp=new DatagramPacket(bytes,bytes.length())  //bytes为字节数组byte[],存放数据

3,接收数据                   ds.receive(dp)

4,解析数据并显示或应用   String ip=dp.getAddress().getHostAddress();   //得到ip地址

String data=String(dp.getData(),0,dp.getLength())   //得到数据包中的字符串

5,释放资源                     ds.close()

tcp编程:

客户端

1,新建socket对象

2,获取输出流,写数据                             outputStream

3,释放资源

服务器端

1,新建ServerSocket对象

2,监听客户端的sokcet ,进行连接           socket s= new ServerSocket().accept();

3,获取输入流,读取数据;

4,释放资源

时间: 2024-10-14 11:17:30

几个java面试题的简洁回答的相关文章

金三银四季!测试一下Java 面试题,能答对60%就去BAT~~~

2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ 以下是2018年发布过的Java面试真题.BATJ等各大互联网公司的面试真经,为方便大家查看,特意做了个导航集合(见文末). 一.面试真题 涵盖内容:Java常考题目.JVM.多线程.MySQL.Redis.Kafka.Docker.RocketMQ.Nginx.MQ队列.数据结构.并发编程.并发压测.秒

Java笔试题解答和部分面试题

面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题.有个例子就是使用HashMap来存储系统配置项.当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加.删除.更新键值对的时候.因为put()操作可以造成重新分配存储大小(re-size

Java面试题-1

Java面试题 Java面试题 1 1.面向对象的特征有哪些方面? 6 2.访问修饰符public,private,protected,以及不写(默认)时的区别? 7 3.String 是最基本的数据类型吗? 8 4.float f=3.4;是否正确? 8 5.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 8 6.Java有没有goto? 8 7.int和Integer有什么区别? 9 8.&和&&的区别? 11

重点|183道Java面试题可以说很详细了

链接:http://t.cn/AiDMxg6g Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象.因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别

Java面试题下

这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章<Java面试题集(86-115)>.此外,这篇文章还对企业应用架构.大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助. 126.什么是ORM?答:对象关系映射(Object-Relational Mapping,简称OR

Java面试题精粹(基础知识)

本篇博文是自己针对网络上已出现的Java面试题帖子汇总,汇总并不是给出链接或直接转载内容,而是分析对比并整理出各帖子中常见.高频的面试题,这些经常露脸的面试题透出面试的趋势(为什么可以成为经典的面试题)及面试官的共通点.而作为求职者.技术爱好者的我们不仅要能够自信.精准得回答这些问题,更要知道为什么出这些问题,面试官想考察我们什么或希望我们给出怎样的回答,适当的再对回答进行拓展以达到更好的效果.面试本身包含了一些心理上的东西,面试官对于问题是有一个心中期许的答案,面试者若能够触摸到边缘或击中要害

收集了50道基础的java面试题

下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja

来自投资银行的20个Java面试题

问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题.有个例子就是使用HashMap来存储系统配置项.当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加.删除.更新键值对的时候.因为put()操作可以造成重新分配存储大小(re-sizeing)的动作,因此有可

JAVA面试题解惑系列(七)——日期和时间的处理

日期和时间的处理不仅在面试题中会考到,在实际项目开发中也是我们经常需要处理的问题,似乎没有哪个项目可以避开它们,我们常常在处理用户的出生年月日.注册日期,订单的创建时间等属性时用到,由此可见其重要性. java.util.Date类 提到日期和时间,我想大家最先想到应该是java.util.Date类吧.Date类可以精确到毫秒数,这个毫秒数是相对于格林威治标准时间"1970-01-01 00:00:00.000 GMT"的差值.那么,什么是格林威治标准时间呢?要回答这个问题,我们需要