先看原题,自己心里默想一遍答案再滑到后面对比答案。答案来源于网络,欢迎指正,共同进步
一、原题
- 自我介绍
- 成绩怎么样
- 老家哪里的
- Java是自学的吗?什么时候开始的?为什么想到学Java?
- 讲讲实习 项目
- 你们实习的组里有几个人?
- 讲一讲敏捷开发的流程?
- 模拟了开早会我会怎么说?
- 你的任务排的很满了但是领导又给你插入了一个新的任务你会怎么做?
- Mongodb 和mysql 的区别?
- String 和String Builder区别?
- 什么是反射?Spring Boot 哪里用到了反射机制
- String Buffer 怎么做到线程安全的
- 什么叫线程安全
- 创建线程的方法?他们的区别?
- 线程间的通信方式
- wait 和notify 的底层实现
- 讲一讲生产者消费者模型
- 归并 排序 怎么实现的?
- 归并 排序 的时间和空间复杂度
- 数据链路层的协议有哪些?
- TCP和UDP区别?
- 讲一讲滑动窗口的流量控制
------------------------------------------------------------------------优美的分割线------------------------------------------------------------------------
二、答案
-
自我介绍
-
成绩怎么样
-
老家哪里的
-
Java是自学的吗?什么时候开始的?为什么想到学Java?
-
讲讲实习 项目
-
你们实习的组里有几个人?
-
讲一讲敏捷开发的流程?
-
模拟了开早会我会怎么说?
-
你的任务排的很满了但是领导又给你插入了一个新的任务你会怎么做?
-
Mongodb 和mysql 的区别?
Mongodb Mysql 数据库模型 非关系型 关系型 查询语句 独特的Mongodb查询方式 传统sql语句 架构特点 可以通过副本集,以及分片来实现高可用 常见的单点,M-S,MHA,MMM,Cluster等架构方式 数据处理方式 基于内存,将热数据存在物理内存中,从而达到高速读写 不同的引擎拥有自己的特点 -
String 和String Builder区别?
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
-
什么是反射?
JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。
-
String Buffer 怎么做到线程安全的
直接通过synchronized 关键字来实现同步操作
-
什么叫线程安全
当一个类被多个线程同时进行访问并且正确运行,它就是线程安全的
-
创建线程的方法?他们的区别?
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类,所以不能再继承其他父类。
-
线程间的通信方式
1、使用 volatile 关键字 2、使用object类的wait()和notify()方法 3、CountDownLatch 4、ReentrantLock + Condition 5、LockSupport
-
wait 和notify 的底层实现
协同线程处理
-
讲一讲生产者消费者模型
生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
-
归并 排序 怎么实现的?
分治的思想
-
归并 排序 的时间和空间复杂度
都是O(n)
-
数据链路层的协议有哪些?
1、Point-to-Point Protocal——PPP点到点。 2、Ethernet——以太网。 3、High-Level Data Link Control Protocal——高级链路控制协议。 4、Frame Relay——帧中继。 5、Asynchronous Transfer Mode——异步传输模式。
-
TCP和UDP区别?
1. TCP协议在传送数据段的时候要给段标号;UDP协议不 2. TCP协议可靠;UDP协议不可靠 3. TCP协议是面向连接;UDP协议采用无连接 4. TCP协议负载较高,采用虚电路;UDP采用无连接 5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议) 6. TCP协议采用窗口技术和流控制s
-
讲一讲滑动窗口的流量控制