| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【备战2020金三银四,谈谈我认为的高级Java开发到底应该是怎样的 -> 正文阅读 |
|
[Java知识库]【备战2020金三银四,谈谈我认为的高级Java开发到底应该是怎样的 |
答案:通过定时任务线程池ScheduledExecutorService的scheduleAtFixedRate方法启动线程每隔30s ping一次服务器,启动之后scheduleAtFixedRate方法会返回当前线程的异步执行结果的引用Future,如果服务器在线,线程会每隔30s触发一次,如果服务区不在线则通过Future.cancel停止本次心跳检测。 5.MyBatis打开调试模式之后,能打印sql语句等信息,这是怎么实现的?实现过程中使用了什么设计模式? 答案:在mybatis的日志模块中,通过动态代理为jdbc的接口无侵入性的增强了日志能力,其本质是使用代理模式,其中ConnectionLogger负责打印连接信息和SQL语句,PreparedStatementLogger负责打印参数信息,ResultSetLogge负责打印数据结果信息。 6.MyBatis是如何为二级缓存动态添加日志、同步控制、阻塞、缓存淘汰策略等附加能力的?用了什么设计模式? 答案:二级缓存使用了装饰器模式为缓存能力添加附加能力的,在缓存模块中有8个装饰器,分别为缓存添加日志、序列化、同步、阻塞等等能力的装饰器,可以在运行期非常灵活的为二级缓存进行增强。 7.多线程编程对我们有什么实际意义? 答案:按照我们一般的业务实现,我们会在一个方法中调用所有相关的业务方法。这种实现带来的问题有什么? 8.在单体应用中,使用加锁机制能解决我们所有的线程问题吗? 答案:不能,加锁有可能会造成我们的程序死锁和活锁,同时,synchronized如果加锁不正确,也不能保证数据的线程安全。 9.Netty高性能表现在哪些方面? 答案:IO 线程模型:同步非阻塞,用最少的资源做更多的事。 内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。 内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。 串形化处理读写:避免使用锁带来的性能开销。即消息的处理尽可能在同一个线程内完成,期间不进行线程切换,这样就避免了多线程竞争和同步锁。表面上看,串行化设计似乎CPU利用率不高,并发程度不够。但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。 高性能序列化协议:支持 protobuf 等高性能序列化协议。 高效并发编程的体现:volatile的大量、正确使用;CAS和原子类的广泛使用;线程安全容器的使用;通过读写锁提升并发性能。 10.MyBatis是怎么通过mapper接口访问数据库? 答案:mybatis是通过sqlSession这个入口才能访问数据库;首先通过动态代理在内存中生成mapper接口的实现类,实现类中的方法要做三个翻译,第一将请求转发给sqlsession中指定的方法,第二拼接sql语句的唯一标识(namespace+id),第三传递查询参数;通过这三步翻译,基于sqlSession完成对数据库的访问。
读者福利分享一份自己整理好的Java面试手册,还有一些面试题pdf CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】 不要停下自己学习的脚步 img-3jBFCvQO-1630855989403)] [外链图片转存中…(img-Wo6wiq8l-1630855989404)] |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 13:09:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |