java面试题4

031. 内存中堆和栈的区别

功能方面:堆是用来存放对象的,栈是用来执行程序的。

共享性:堆是线程共享的,栈是线程私有的。

空间大小:堆大小远远大于栈。

032  java当中IO流的分类

      字节流  InputStream(抽象类)  OutputStream

              FileInputStream FileOutputStream (实现类)

          装饰者模式对传统的字节流进行了封装,增加了缓冲区功能

          BufferedInputStream  BufferedOutputStream(带有缓冲区的字节流)

      字符流  Reader       writer

              FileReader  FileWriter

          BufferedReader  BufferedWriter

033多线程并发或线程安全问题如何解决?

   1:通过volatile 关键字修饰变量,可以实现线程之间的可见性,

     避免变量脏读的出现,底层是通过限制jvm指令的重排序来实现的

     适用于一个线程修改,多个线程读的场景

   2:通过synchronized锁(任意对象)来实现线程同步,自动锁的思想,

     底层实现原理:当有线程进入同步代码块之后,利用jvm的计数器将

     锁的标记置为1,当别的线程再想进入的时候,发现锁的标记为1,

     该线程就去锁池等待,当第一个线程出来之后,锁的标记会置为0,

     之后cpu会随机分配一个线程再次进入同步代码块.

   3:通过lock锁的机制,进行手动lock,和unlock,但是这种很容易出现死锁。

     注意加锁以及解锁的顺序,就可以避免死锁

   4:通过线程安全的集合类,可以解决并发问题

     ConcurrentHashMap

     CopyonWriteArrayList

   5:使用并发包下面的原子类,底层使用的是cas机制(乐观锁),可以解决并发问题 atomicInteger  线程安全的原子整型类

   6:使用线程池来创建和管理线程,也可以一定程度上解决并发问题

   7:使用ThreadLocal来修饰变量,可以解决并发问题

       ThreadLocal底层是怎么实现的?

       多个线程会复制一份threadLocao变量的副本进行操作,互不影响,来保证线程安全的

034. 接口的默认方法

Java 8 允许我们给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法,

示例如下:

interface Formula {

double calculate(int a);

default double sqrt(int a) {

return Math.sqrt(a);

}

}

Formula 接口在拥有 calculate 方法之外同时还定义了 sqrt 方法,实现了 Formula 接口的子类只需要实现一个 calculate方法,默认方法 sqrt 将在子类上可以直接使用。

035. 反射的概念

可以通过 class 字节码文件对象,操作类的成员(构造方法,成员变量,成员方法),动态获取类的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。

036. 反射获取文件对象的三种方式

1、Class.forName(类的全限定名)

2、类名.class

3、对象.getClass()

037. 反射中的常用类

1、Class 类:反射的核心类,可以获取类的属性,方法等内容信息

2、Constractor :构造方法

3、Method: 成员方法

4、Field;

038. 反射的作用和应用场景

可以通过配置文件来动态配置和加载类,以实现软件工程理论里所提及的类与类,模块与模块之间的解耦。反射最经典的应用是 spring 框架。

039.iso7层模型 

物理层 数据链路层 网络层 传输层 会话层  表示层  应用层

tcp/udp属于传输层的协议

040.tcp和udp有什么区别?

tcp是面向连接的,建立连接前需要进行三次握手,断开连接前需要进行

四次挥手,可靠的不会造成数据丢失的,可以简单理解成打电话,效率低

udp协议是面向无连接,不可靠有可能造成数据丢失,可以理解成发电报,

效率高

更多请点开我的首页进行查看,谢谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值