![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java工程师面试题
文章平均质量分 84
不爱写代码的小林QAQ
ACM大赛、蓝桥杯、互联网+光参赛不拿奖,主打的就是一个陪伴。
展开
-
互联网Java工程师面试题——Java并发编程(二)
如果使用ReentrantLock,可能本身是为了防止线程A 在写数据、线程B 在读数据造成的数据不一致,但这样, 如果线程C 在读数据、线程D 也在读数据,读数据是不会改变数据的,没有必要加锁,但是还是加锁了,降低了程序的性能。ReadWriteLock 是一个读写锁接口,ReentrantReadWriteLock 是ReadWriteLock 接口的一个具体实现,实现了读写的分离,读锁是共享的,写锁是独占的,读和读之间不会互斥,读和写、写和读、写和写之间才会互斥,提升了读写的性能。原创 2023-03-26 13:07:24 · 115 阅读 · 0 评论 -
互联网Java工程师面试题——kafka篇
消息系统都致力于让consumer 以最大的速率最快速的消费消息,但不幸的是, push 模式下, 当broker 推送的速率远大于consumer 消费的速率时, consumer 恐怕就要崩溃了。这样消费状态的跟踪就很简单了。比如你不是上面两个场景,那做的稍微复杂一点, 你需要让生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id 之类的东西,然后你这里消费到了之后,先根据这个id 去比如Redis 里查一下,之前消费过吗?如果消费过了, 那你就别处理了, 保证别重复处理相同的消息即可。原创 2023-03-25 14:33:40 · 143 阅读 · 0 评论 -
互联网Java工程师面试题——Java并发编程(一)
BlockingQueue 接口是Queue 的子接口,它的主要用途并不是作为容器,而是作为线程同步的的工具,因此他具有一个很明显的特性,当生产者线程试图向BlockingQueue 放入元素时, 如果队列已满,则线程被阻塞, 当消费者线程试图从中取出一个元素时,如果队列为空,则该线程会被阻塞, 正是因为它所具有这个特性, 所以在程序中多个线程交替向BlockingQueue 中放入元素, 取出元素,它可以很好的控制线程之间的通信。其次,你在没有使用高代价的同步或者不变性的情况下获得了线程安全。原创 2023-03-25 10:43:43 · 189 阅读 · 0 评论 -
互联网Java工程师面试题——MySql篇
但是如果你的MySQL 表类型是使用InnoDB Tables 或BDB tables 的话,你的MySQL 就可以使用事务处理,使用SETAUTOCOMMIT=0 就可以使MySQL 允许在非autocommit 模式,在非autocommit 模式下,你必须使用COMMIT 来提交你的更改,或者用ROLLBACK来回滚你的更改。左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL 来填充。原创 2023-03-23 22:37:26 · 114 阅读 · 0 评论 -
互联网Java工程师面试题——Dubbo篇
Dubbo 的Provider 启动时,需要与注册中心交互,先注册自己的服务,再订阅自己的服务,订阅时,采用了观察者模式,开启一个listener。随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术, 如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。例如,EchoFilter 的作用是判断是否是回声测试请求,是的话直接返回内容, 这是一种责任链的体现。原创 2023-03-23 09:49:22 · 68 阅读 · 0 评论 -
互联网Java工程师面试题——Zookeeper篇
在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动, 我只要最新的数据即可。程序分布式的部署在不同的机器上,将程序的配置信息放在zk 的znode 下,当有配置发生改变时,也就是znode 发生变化时,可以通过改变zk 中某个目录节点的内容,利用watcher 通知给各个客户端,从而更改配置。命名服务是指通过指定的名字来获取资源或者服务的地址,利用zk 创建一个全局的路径, 即是唯一的路径,这个路径就可以作为一个名字, 指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。原创 2023-03-22 22:24:27 · 65 阅读 · 0 评论 -
互联网Java工程师面试题——MyBatis篇
什么是Mybatis?1、Mybatis 是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql 执行性能, 灵活度高。2、MyBatis 可以使用XML 或注解来配置和映射原生信息, 将POJO 映射成数据库中的记录,避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。原创 2023-03-22 21:42:35 · 125 阅读 · 0 评论