没有合适的资源?快使用搜索试试~ 我知道了~
大数据常见面试题2022
需积分: 0 4 下载量 185 浏览量
2023-03-01
10:29:10
上传
评论 2
收藏 3.42MB DOCX 举报
温馨提示
试读
133页
大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题2022大数据常见面试题
资源推荐
资源详情
资源评论
第 1 章 Java
1.1 ConcurrentHashMap 是怎么实现的?
答:ConcurrentHashMap 是 concurrent 包中线程安全的哈希表,采用分段锁,可以理
解为把一个大的 Map 拆分成 N 个小的 HashTable,根据 key.hashCode() 来决定把 key 放
到哪个 HashTable 中。在 ConcurrentHashMap 中,就是把 Map 分成了 N 个 Segment,put
和 get 的时候,都是现根据 key.hashCode() 算出放到哪个 Segment 中。
1.2 List 与 set 的区别
答:List 和 Set 都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺
序的实现类。 最大的不同就是 List 是可以重复的。而 Set 是不能重复的。 List 适合经常追
加数据,插入,删除数据。但随即取数效率比较低。 Set 适合经常地随即储存,插入,删
除。但是在遍历时效率比较低。
1.3 工厂模式
答:工厂模式一般分为三种: 简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式:简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获取实
例对象的引用。比如一个登陆功能,后端有三个类,controller 类,interface 类,实现接口
的实现类。当客户端发出一个请求,当请求传到 controller 类中时,controller 获取接口的引
用对象,而实现接口的实现类中封装好了登陆的业务逻辑代码。当你需要加一个注册需求的
时候只需要在接口类中加一个注册方法,实现类中实现方法,controller 获取接口的引用对
象即可,不需要改动原来的代码,这种做法是的可拓展性强。
1.4 多线程有几种创建方式?
一般有四种方法,
(1)继承 Thread,
(2)实现 Runnable 接口,
(3)实现 Callable 接口,
(4)使用 Executor 框架来创建线程池。
1.2 Java 的特性
1、抽象
父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为。抽象类使用
abstract 进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类。
面向对象有三个主要特征,分别是封装性、继承性和多态性。
2、封装
类的说明展现了封装性,类作为对象的模板,含有私有数据和公有数据,封装性能使数
据更加安全,依赖的就是类的特性,使得用户只能看到对象的外在特性,不能看到对象的内
在属性,用户只能访问公有数据不能直接访问到私有数据。
3、继承
类的派生功能展现了继承性,继承性是子类共享父类的机制,但是由于封装性,继承性
也只限于公有数据的继承(还有保护数据的继承),子类在继承的同时还可以进行派生。
4、多态
多态是指父对象中的同一个行为能在其多个子对象中有不同的表现。也就是说子对象可
以使用重写父对象中的行为,使其拥有不同于父对象和其它子对象的表现,这就是 overriding
(重写)。overload(重载)不属于面向对象中的多态的范畴。
多态存在的三个必要条件:要有继承、要有重写、父类引用指向子类对象。
1.3 设计模式
1.设计模式是什么,设计模式有什么作用?
设计模式是一套被反复使用的、多数人知晓、经过分类编目的优秀代码设计经验的总结。
特定环境下特定问题的处理方法。
1)重用设计和代码 重用设计比重用代码更有意义,自动带来代码重用
2)提高扩展性 大量使用面向接口编程,预留扩展插槽,新的功能或特性很容易加入到
系统中来
3)提高灵活性 通过组合提高灵活性,可允许代码修改平稳发生,对一处修改不会波及
到其他模块
4)提高开发效率 正确使用设计模式,可以节省大量的时间
2.开发中用过到了哪些设计模式,用在什么场合?
a) 单例模式:单例模式核心只需要 new 一个实例对象的模式,比如数据库连接,在线
人数等,一些网站上看到的在线人数统计就是通过单例模式实现的,把一个计时器存放在数
据库或者内存中,当有人登陆的时候取出来加一再放回去,有人退出登陆的时候取出来减一
再放回去,但是当有两个人同时登陆的时候,会同时取出计数器,同时加一,同时放回去,
这样的话数据就会错误,所以需要一个全局变量的对象给全部人使用,只需要 new 出一个
实例对象,这就是单例模式的应用,并且单例模式节省资源,因为它控制了实例对象的个数,
并有利于 gc 回收。
b) 策略模式:就是将几个类中公共的方法提取到一个新的类中,从而使扩展更容易,
保证代码的可移植性,可维护性强。比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三
种方法,如果每个鸭子类都写这三个方法会出现代码的冗余,这时候我们可以把鸭子中的叫,
飞,外形这三个方法提取出来,放到鸭父类中,让每个鸭子都继承这个鸭父类,重写这三个
方法,这样封装的代码可移植性强,当用户提出新的需求比如鸭子会游泳,那么对于我们 oo
程序员来讲就非常简单了我们只需要在鸭父类中加一个游泳的方法,让会游泳的鸭子重写游
泳方法就可以了。
c) 工厂模式:简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获
取实例对象的引用。比如一个登陆功能,后端有三个类,controller 类,interface 类,实现
接口的实现类。当客户端发出一个请求,当请求传到 controller 类中时,controller 获取接口
的引用对象,而实现接口的实现类中封装好了登陆的业务逻辑代码。当你需要加一个注册需
求的时候只需要在接口类中加一个注册方法,实现类中实现方法,controller 获取接口的引
用对象即可,不需要改动原来的代码,这种做法是的可拓展性强。
1.5 tcp,udp 的区别
TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议,是专门为了在不可靠
的网络中提供一个可靠的端对端字节流而设计的,面向字节流。
UDP(用户数据报协议)是 iso 参考模型中一种无连接的传输层协议,提供简单不可靠
的非连接传输层服务,面向报文
区别:
1) TCP 是面向连接的,可靠性高;UDP 是基于非连接的,可靠性低
2) 由于 TCP 是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时
性差,同时过程复杂,也使其易于攻击;UDP 没有建立连接的过程,因而实时性较强,也稍
安全
3) 在传输相同大小的数据时,TCP 首部开销 20 字节;UDP 首部开销 8 字节,TCP 报
头比 UDP 复杂,故实际包含的用户数据较少。TCP 在 IP 协议的基础上添加了序号机制、确
认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包或乱序,而 UDP 有丢包,
故 TCP 开销大,UDP 开销较小
4) 每条 TCP 连接只能是点到点的;UDP 支持一对一、一对多、多对一、多对多的交
互通信
应用场景选择
对实时性要求高和高速传输的场合下使用 UDP;在可靠性要求低,追求效率的情况下使
用 UDP;
需要传输大量数据且对可靠性要求高的情况下使用 TCP
1.6 网络七层和网络四层,它们的区别是什么
“七层”是 OSI 参考模型,即物理层 、 数据链路层 、 网络层、传输层、 会话层 、
表示层、应用层 ;
“四层”是 TCP/IP 参考模型,即物理链路层、 网络层、传输层、应用层。
虽说有四层和七层之说,但是其实一样的,TCP/IP 中的物理链路层对应 OSI 中的物理层
和数据链路层 ,网络层对应网络层,传输层对应传输层,应用层对应会话层 、表示层、应
用层 。
总结
网络七层模型是一个标准,而非实现。
网络四层模型是一个实现的应用模型。
网络四层模型由七层模型简化合并而来
1.7 用 java 写出单例模式(多种方法加分)
答:单例模式主要作用是保证在 Java 应用程序中,一个类只有一个实例存在。下面给出两
种不同形式的单例:
第一种形式:饿汉式单例
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
一上来就把单例对象创建出来了,要用的时候直接返回即可,这种可以说是单例模式中
最简单的一种实现方式。但是问题也比较明显。单例在还没有使用到的时候,初始化就已经
完成了。也就是说,如果程序从头到位都没用使用这个单例的话,单例的对象还是会创建。
这就造成了不必要的资源浪费。所以不推荐这种实现方式。
第二种形式:懒汉式单例(线程不安全)
public class Singleton {
//类初始化时,不会初始化这个对象(延迟加载,真正用的时候再创建)
private static Singleton instance = null;
//构造方法私有化
private Singleton() {}
剩余132页未读,继续阅读
资源评论
bmyyyyyy
- 粉丝: 943
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
- Linux线程同步机制深度解析与实用指南.zip
- PTA题库C语言解题策略与实战.rar
- SVPWM控制技术的simulink建模与仿真【包括simulink模型,参考文献,操作步骤】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功