记一次java面试(小黑鱼)

版权声明:本文为博主anzy原创文章,转载请注明地址 https://blog.csdn.net/qq_24549805/article/details/80206068

一、hashMap与hashTabel的区别:

1、线程是否同步

HashMap不是线程安全的,HashTable是线程安全,他们之前的方法基本上都是相同的,HashMap的效率明显要比HashTabel快。

2、扩容(基于JDK1.8)


上面是我回答的,有点紧张许多知道的点没说,

例如:当getmap中的值首先用hashcode比较如果相等时接下来会比较用equals比较值。

接下来问我我会怎么实现一个同步的map,然后我想到了ConcurrentHashMap

说了一下concurrentHashmap是多段上锁,当时后面说了一句没看过源码具体不知怎么实现的,现在想来该说一下concurrentHashmap相率回避HashTable快,concurrentHashmap只有在调用size的时候会锁住整个表。没把自己知道的说出来。

二、问了redis应用场景、MQ应用场景

redis说了session持久化,以及做查询缓存。

然后问了用的时候遇到的坑,整个没答好。

现在想起来做缓存的时候,redis如果命中不了会以下字把压力压向数据库,会造成数据库雪崩,这里之前我在腾讯课堂里面听过解决方案,就是对查询上try lock锁,让一个请求去请求数据库,请求完其他的能继续从缓存中获取。

MQ我讲了之前我用MQ+log4j实现的日志系统。现在想来应该再说一下MQ的好处:如:削峰、解耦等。

然后问了主流MQ的区别如何选择:

这个知识点之前在文章中看过,但是说实话没记住,只是模糊的记者事务、持久化这些但具体到就忘了。

RabbitMQ、ActiveMQ、Kafka:

数据可靠性

  • RocketMQ支持异步实时刷盘,同步刷盘,同步复制,异步复制
  • 卡夫卡使用异步刷盘方式,异步复制/同步复制

    总结:RocketMQ的同步刷盘在单机可靠性上比Kafka更高,不会因为操作系统Crash,导致数据丢失。Kafka同步Replication理论上性能低于RocketMQ的同步Replication,原因是Kafka的数据以分区为单位组织,意味着一个Kafka实例上会​​有几百个数据分区,RocketMQ一个实例上只有一个数据分区,RocketMQ可以充分利用IO组Commit机制,批量传输数据,配置同步Replication与异步Replication相比,性能损耗约20%~30%,Kafka没有亲自测试过,但是个人认为理论上会低于RocketMQ。

  • 性能对比

    • 卡夫卡单机写入TPS约在百万条/秒,消息大小10个字节
    • RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节

      总结:Kafka的TPS跑到单机百万,主要是由于Producer端将多个小消息合并,批量发向Broker。
      RocketMQ为什么没有这么做?

参考:http://jm.taobao.org/2016/03/24/rmq-vs-kafka/

三、用AOP做了什么

我回答咱们项目中都会用它来做事务;我用AOP做过日志,横切的service层,service方法中入参回参打印日志,减少开发人员工作量。

然后问我AOP的坏处,我没想到,然后说会影响性能,然后就想起来反射影响性能。

四、quart

因为简历上有写quart,然后就说了一下quart有两种配置一种XML一种注解,具体的方法记不住了。后面又说了一下我用quart做了定时统计这个。


------------------------------------------------------

大约问了以上技术问题。

下面简单说一下面试过程,面试过程大约一个小时

1、第一个面试官主要是问了一些之前做的项目,问了一些业务。

(自己的回答不是很满意)

以后需要好好回想一下自己做过的项目

2、问的技术主要是细节基础的

3、第三个面试官也是问了许多技术但是没问细节


感觉自己面试悬,因为回答的不是很满意后面也没提待遇等等其他问题,只是说今天先这样。







猜你喜欢

转载自blog.csdn.net/qq_24549805/article/details/80206068
今日推荐