前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我先入坑啦,等你哦!

我先入坑啦,等你哦!

原创
作者头像
夕梦
修改2021-06-08 10:04:11
3420
修改2021-06-08 10:04:11
举报
文章被收录于专栏:每日面试每日面试

1、redis为什么读取的那么快??? ? ? ? ? ?

1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

2.采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

3.使用多路I/O复用模型,非阻塞IO。

2、springBean的注入方式有哪几种?

构造方法注入:构造方法注入是指在构造方法中注入属性或者对象来实现依赖注入。

SET方法注入:set方法注入就是通过在类中实现get、set方法来实现属性或者对象的依赖注入。

注解注入:@Autowired注解可以实现自动装配,只要在对应的属性上标记该注解,但是@Autowired注解只按照byType注入。@Resource注解可以实现自动装配,它有两个重要属性name和type,name属性解析为bean的名字,type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。@Autowired注解和@Resource注解的作用相同,只不过@Autowired按照byType注入,如果@Autowired想使用名称可以结合@Qualifier注解进行使用。

3、mybatis动态sql标签有哪些?

IF标签:在开发中有时候我们会有很多条件查询,而这些条件我们可填也可不填,这个时候我们可以使用IF标签来解决。

trim标签:trim可以帮我们完成后面多出的and或者or、where标签不能解决,还可以用来切除字符串等等。

Choose:它和case when功能差不多,都是只会走一种,不管when条件里面有几个满足了,都只走第一个,如果when所有条件都没有满足,就会走otherwise。

foreach标签:foreach循环遍历的意思,一般可用于查询,或者批量新增等功能。

4、BIO、NIO、AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

5、Hashmap和hashtable的区别?

1、HashMap 是非线程安全的,HashTable 是线程安全的。

2、HashMap 的键和值都允许有 null 值存在,而 HashTable 则不行。

3、因为线程安全的问题,HashMap 效率比 HashTable 的要高。

4、Hashtable 是同步的,而 HashMap 不是。因此,HashMap 更适合于单线程环境,而 Hashtable 适合于多线程环境。一般现在不建议用 HashTable, ①是 HashTable 是遗留类,内部实现很多没优化和冗余。②即使在多线程环境下,现在也有同步的 ConcurrentHashMap 替代,没有必要因为是多线程而用HashTable。

6、线程池的核心参数?

corePoolSize:核心线程池的大小 maximumPoolSize:线程池能创建线程的最大个数 keepAliveTime:空闲线程存活时间 unit:时间单位,为keepAliveTime指定时间单位 workQueue:阻塞队列,用于保存任务的阻塞队列 threadFactory:创建线程的工程类 handler:饱和策略(拒绝策略)

7、数据库索引的实现原理?

索引是对数据库表中一个或多个列(例如,employee 表的姓名?(name)?列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。

8、你们项目多少人?

这里只是作为举例哦!

图片
图片

根据项目业务难易程度、周期等人员都会有所不同,所以可以结合自己的项目情况来说。

9、Dubbo在你们项目中怎么用的?

dubbo在我们项目中主要用来实现不同系统之间的服务调用,由于我们项目是按照不同的功能分了不同的系统,按照三层架构又分了不同的服务,其中三层架构中的控制层作为服务的消费方,业务层和持久层共同作为服务的发布方,这样的架构实现了系统的服务化,提高了开发效率,实现了业务的解耦。 项目中通过dubbo和spring的整合,采用全spring配置方式,只需要用spring来加载dubbo的配置,完成了服务的发布和调用。我们主要在服务的暴露方通过<dubbo:service>标签来暴露服务,在服务的消费方通过<dubbo:reference>标签来引用服务,注册中心我们选用的是zookeeper,对服务的URL进行了管理和配置。

10、Dubbo都支持什么协议?这些协议有什么不同点?你们项目使用的是什么协议?

Dubbo支持Dubbo协议、RMI协议、hessian协议、Http协议等。

?Dubbo协议:缺省协议、采用了单一长连接和NIO异步通讯、使用线程池并发处理请求,能减少握手和加大并发效率、采用的是Hession二进制序列化、性能较好,推荐使用。? 主要应用于传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,由于是单一连接,因为尽量不要传输大文件。

RMI协议:采用JDK标准的RMI协议(基于TCP协议)、堵塞式短连接、JDK标准序列化方式、同步通讯。适用于消费者和提供者个数差不多的,可传文件。测试发现偶尔会连接失败,需要重建Stub。

?Hessian协议:采用http通讯,采用Servlet暴露服务,多连接短连接的同步传输方式,采用hession的二进制序列化,适合提供者比消费者多。

????我们项目中使用的是默认Dubbo协议(其他两种简单的知道就行),因为我们项目的特点主要是并发大、消费者要比提供者多。

11、在使用Duubo的过程中你们遇到过什么问题?

(1)序列化和反序列化异常: 调用服务,出现消息发送失败的时候,通常是接口方法的传入传出参数是新增加的扩展类,没有实现序列化接口; ???? B服务远程调用A服务,返回值为C对象,结果断点A服务返回值对象C有值,但是B服务远程拿到的C对象为null;

(2)服务调用问题 ?????服务提供者是否正常运行?(这块可能涉及到调用的服务被禁止) ?????连接的注册中心是否正确?(有时会涉及到注册中心的分组问题) ?????相应的服务提供者是否注册到注册中心?

(3)调用版本问题(在开发过程中增加提供服务版本号和消费服务版本号) ?????当遇到多个环境(开发、测试、上线)、多个版本(app、PC端)的时候,一个服务可能不满足我们的需求,因为对服务的版本号进行定义,可以为我们后期版本的迭代升级做好铺垫。 ????整个过程会遇到各种各样的问题,上面这些基本都是技术问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com