每日一面---真实面试题---8

先看原题,自己心里默想一遍答案再滑到后面对比答案。答案来源于网络,欢迎指正,共同进步

一、原题
  1. 自我介绍
  2. 成绩怎么样
  3. 老家哪里的
  4. Java是自学的吗?什么时候开始的?为什么想到学Java?
  5. 讲讲实习 项目
  6. 你们实习的组里有几个人?
  7. 讲一讲敏捷开发的流程?
  8. 模拟了开早会我会怎么说?
  9. 你的任务排的很满了但是领导又给你插入了一个新的任务你会怎么做?
  10. Mongodb 和mysql 的区别?
  11. String 和String Builder区别?
  12. 什么是反射?Spring Boot 哪里用到了反射机制
  13. String Buffer 怎么做到线程安全的
  14. 什么叫线程安全
  15. 创建线程的方法?他们的区别?
  16. 线程间的通信方式
  17. wait 和notify 的底层实现
  18. 讲一讲生产者消费者模型
  19. 归并 排序 怎么实现的?
  20. 归并 排序 的时间和空间复杂度
  21. 数据链路层的协议有哪些?
  22. TCP和UDP区别?
  23. 讲一讲滑动窗口的流量控制

------------------------------------------------------------------------优美的分割线------------------------------------------------------------------------
















二、答案
  1. 自我介绍

  2. 成绩怎么样

  3. 老家哪里的

  4. Java是自学的吗?什么时候开始的?为什么想到学Java?

  5. 讲讲实习 项目

  6. 你们实习的组里有几个人?

  7. 讲一讲敏捷开发的流程?

  8. 模拟了开早会我会怎么说?

  9. 你的任务排的很满了但是领导又给你插入了一个新的任务你会怎么做?

  10. Mongodb 和mysql 的区别?

    MongodbMysql
    数据库模型非关系型关系型
    查询语句独特的Mongodb查询方式传统sql语句
    架构特点可以通过副本集,以及分片来实现高可用常见的单点,M-S,MHA,MMM,Cluster等架构方式
    数据处理方式基于内存,将热数据存在物理内存中,从而达到高速读写不同的引擎拥有自己的特点
  11. String 和String Builder区别?

    String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
    
     如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
    
  12. 什么是反射?

    JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;
    
    对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
    
    JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。
    
    
  13. String Buffer 怎么做到线程安全的

    直接通过synchronized 关键字来实现同步操作
    
  14. 什么叫线程安全

    当一个类被多个线程同时进行访问并且正确运行,它就是线程安全的
    
  15. 创建线程的方法?他们的区别?

    java创建线程的方式有三种:
        1、继承Thread,重写Thread类的run()方法。
        2、实现Runnable接口,作为参数,传递给Thread的构造函数。
        3、FutureTask+Callable接口
    
    
    三种方式对比:
    
        采用实现Runnable、Callable接口的方式
            优势:
                线程类只是实现了Runnable接口或Callable接口,还可以继承其他类。
                多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU、代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
                线程池只能放入Runable或Callable接口实现类,不能直接放入继承Thread的类
                call()方法执行后可以有返回值
                运行Callable任务可以拿到一个Future对象,表示异步计算的结果 。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果
            劣势:编程稍微复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。
        使用继承Thread类的方式
            优势:编写简单,如果需要访问当前线程,则无需使用Thread.currentThread()方法,直接使用this即可获得当前线程。
            劣势:线程类已经继承了Thread类,所以不能再继承其他父类。
    
    
  16. 线程间的通信方式

    1、使用 volatile 关键字
    2、使用object类的wait()和notify()方法
    3、CountDownLatch
    4、ReentrantLock + Condition
    5、LockSupport
    
    
  17. wait 和notify 的底层实现

    协同线程处理
    
  18. 讲一讲生产者消费者模型

    生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
    
  19. 归并 排序 怎么实现的?

    分治的思想
    
  20. 归并 排序 的时间和空间复杂度

    都是O(n)
    
  21. 数据链路层的协议有哪些?

    1、Point-to-Point Protocal——PPP点到点。
    
    2、Ethernet——以太网。
    
    3、High-Level Data Link Control Protocal——高级链路控制协议。
    
    4、Frame Relay——帧中继。
    
    5、Asynchronous Transfer Mode——异步传输模式。
    
  22. TCP和UDP区别?

         1. TCP协议在传送数据段的时候要给段标号;UDP协议不
         2. TCP协议可靠;UDP协议不可靠
         3. TCP协议是面向连接;UDP协议采用无连接
         4. TCP协议负载较高,采用虚电路;UDP采用无连接
         5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
         6. TCP协议采用窗口技术和流控制s
    
  23. 讲一讲滑动窗口的流量控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
java面试题真的很多,下面我来回答一个有关多线程的问题。 在Java中实现多线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。这两种方式有何区别? 继承Thread类的方式是直接定义一个类继承Thread,并重写它的run()方法。然后创建该类的对象,并调用对象的start()方法来启动线程。这种方式简单直接,但因为Java是单继承的,所以如果某个类已经继承了其他类,就不能再直接继承Thread类实现多线程。 实现Runnable接口的方式是定义一个类实现Runnable接口,并实现其唯一的抽象方法run()。然后创建Thread类的对象,将实现了Runnable的对象作为参数传递给Thread类的构造方法。最后调用Thread对象的start()方法来启动线程。这种方式灵活性更大,因为Java允许一个类实现多个接口,所以即使某个类已经继承了其他类,仍然可以通过实现Runnable接口来实现多线程。 另一个区别在于资源共享的问题。继承Thread类的方式,不管是数据还是方法,都是线程自己拥有的,不存在共享的情况。而实现Runnable接口的方式,多个线程可以共享同一个对象的数据和方法,因为多个线程共同操作的是同一个Runnable对象。 总结来说,继承Thread类方式简单直接,但只能通过单继承来实现多线程;实现Runnable接口方式更灵活,可以解决单继承的限制,并且多个线程可以共享同一个Runnable对象的数据和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值