| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 牛客网阿里后端一面面经学习答案整理 -> 正文阅读 |
|
[Java知识库]牛客网阿里后端一面面经学习答案整理 |
面经链接:https://www.nowcoder.com/discuss/842756 目 录HashMap的实现(以及一系列追问)HashMap是我们非常常用的数据结构,由数组和链表组合构成的数据结构。 HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为 null。 CurrentHashMap的实现?先将数据分为?段?段的存储,然后给每?段数据配?把锁,当?个线程占?锁访问其中?个段数据时,其他段的数据也能被其他线程访问。 在1.8中, volatile是怎么实现的volatile 主要有两个作用:
详见:volatile 作用及其实现原理 TCP、UDPUDP 在传送数据之前不需要先建?连接,远地主机在收到 UDP 报?后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是?种最有效的?作?式(?般?于即时通信),?如: QQ 语?、 QQ 视频 、直播等等。 而TCP 提供?向连接的服务。在传送数据之前必须先建?连接,数据传送结束后要释放连接。TCP 不提供?播或多播服务。由于 TCP 要提供可靠的,?向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握?来建?连接,?且在数据传递时,有确认、窗?、重传、拥塞控制机制,在数据传完后,还会断开连接?来节约系统资源),这?难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的?部增?很多,还要占?许多处理机资源。TCP ?般?于?件传输、发送和接收邮件、远程登录等场景。 三次握手三次握?的目的是建?可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握?最主要的目的就是双?确认自己与对方的发送与接收是正常的。
所以三次握?就能确认双发收发功能都正常,缺?不可。 JVM内存结构描述垃圾回收算法垃圾回收算法我了解到的有四种,标记-清除算法、复制算法、标记-整理算法和分代收集算法。 标记-清除算法该算法分为标记、清除两个阶段。 复制算法解决了刚刚的效率问题。将内存分为大小相同的两块区域,每次使用一块,当这块内存使用完后,将还存活的对象复制到另一块后,将这一块使用过的空间一次清理掉。这样的话,每次回收都是对内存区间的一半进行回收。 标记-整理算法根据老年代特点提出的。 分代收集算法是当前普遍采用的算法。它根据对象存活周期的不同将内存分为几块。根据各个年代的特点选择合适的垃圾收集算法。 列举进程间通信方式
详见:https://blog.csdn.net/zhaohong_bo/article/details/89552188 列举线程同步的方式
I/O多路复用IO多路复用(IO Multiplexing)是指单个进程/线程就可以同时处理多个IO请求。 实现原理:用户将想要监视的文件描述符(File Descriptor)添加到select/poll/epoll函数中,由内核监视,函数阻塞。一旦有文件描述符就绪(读就绪或写就绪),或者超时(设置timeout),函数就会返回,然后该进程可以进行相应的读/写操作。 wait和sleep方法区别wait和sleep都可以暂停线程的执?,两者最主要的区别在于: sleep() ?法没有释放锁,? wait() ?法释放了锁 。 IOC和AOP是如何实现的IoCIoC(Inverse of Control:控制反转)是?种设计思想,就是 将原本在程序中?动创建对象的控制权,交由Spring框架来管理。 IoC 在其他语?中也有应?,并? Spring 特有。 IoC 容器是Spring ?来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。 AOPAOP(Aspect-Oriented Programming:?向切?编程)能够将那些与业务?关,却为业务模块所共同调?的逻辑或责任(例如事务处理、?志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。 Spring动态代理的实现方式
描述Spring Bean的生命周期
详见:https://www.cnblogs.com/zrtqsk/p/3735273.html MySQL索引、为什么不用哈希索引详见:https://www.cnblogs.com/agilestyle/p/14419263.html MySQL分库分表详见:https://blog.csdn.net/wdcl2468/article/details/102911160 MySQL主从复制主从复制(Replication)是指数据可以从一个MySQL数据库主服务器复制到一个或多个从服务器,从服务器可以复制主服务器中的所有数据库或者特定的数据库,或者特定的表。默认采用异步模式。 实现原理:
主从复制可以实现:
MySQL事务持久化机制详见:https://www.cnblogs.com/jamaler/p/12174517.html Redis主从复制主从连接过程:
**作用:**数据冗余、故障恢复、负载均衡、高可用的基石。使用slave of 命令将某一台redis变为从机。 Redis持久化
AOF的追写策略:建议使用每秒同步一次 rewrite机制:rewrite会记录上次重写时AOF文件的大小,当AOF文件是上一次大小的二倍且大于64M时触发。 Redis分布式锁详见:https://blog.csdn.net/my_daidai/article/details/107232107 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:54:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |