专栏首页每日面试我先入坑啦,等你哦!
原创

我先入坑啦,等你哦!

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端)的时候,一个服务可能不满足我们的需求,因为对服务的版本号进行定义,可以为我们后期版本的迭代升级做好铺垫。     整个过程会遇到各种各样的问题,上面这些基本都是技术问题。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 波波阿菌的小游戏1——填坑贴1

    这个教程,是面向零基础同学讲解的,希望大家都能做出一款暖心的小游戏 - 教程:制作一个小游戏送给喜欢的TA(不会编程也能学会哦)

    阿菌要努力
  • 该如何正确的使用SVG sprites?

        大家好,这里是@IT·平头哥联盟,我是`首席填坑官`——苏南,今天要给大家分享的是SVG sprite(也叫雪碧图),所谓雪碧图,当然就不是我们常喝的雪...

    苏南
  • 电脑开机密码忘记了咋办,三分钟教你PJ掉

    我们下载好微PE工具箱具,建议小伙伴们下载微PE之WIN10PE。下载好以后我们打开软件—点击软件界面右下角【其它安装方式】旁边的USB图标。

    IT小侠公社
  • 该如何以正确的姿势插入SVG Sprites?

      大家好,这里是@IT·平头哥联盟,我是 首席填坑官——苏南(South·Su),今天要给大家分享的是 SVGSprites(也叫雪碧图),所谓雪碧图,当然就...

    苏南
  • AsyncTask? AsyncTask串行and并行?

    AsyncTask,相信你不会陌生,也许你很幸运,早已了解了AsyncTask这个家伙挖的坑,也许你已经被坑过了,也许你没坑了,然而还没有发觉!

    陈宇明
  • Flask(3)- Flask 中的 HTTP 方法

    默认的 app.route() 是仅支持 GET 请求的,如果想通过 POST、PUT、DELTE 等方法正常请求的话,需要添加 methods 参数哦

    小菠萝测试笔记
  • 做完小程序项目、老板给我加了6k薪资~

      大家好,这里是@IT·平头哥联盟,我是首席填坑官——苏南(South·Su),今天要给大家分享的是最近公司做的一个小程序项目,过程中的一些好的总结和遇到的坑...

    苏南
  • 盘点SoapUI调用Webservice接口踩过的坑

    当然是用于调用Webservice接口的啦,渗透过程中,如果能获取到Webservice开放接口,说不定可以直接getshell哦!

    陈殷
  • 扎心了!数据分析十大真相

    经常有小伙伴问:“小熊妹,做数据分析师是不是很好呀?我看网上好多人写转行的文章”。这个,我劝你小心。网上写文章嘛,都是只写贼吃肉,不写贼挨打,以我3年来的经历来...

    码工小熊
  • 如何与深度学习服务器优雅的交互?

    有没有想到小夕今天会发文章呢?( ̄∇ ̄)有木有超级想小夕呢( ̄∇ ̄) 小夕在前面写了一堆纯理论和半理论的文章,不要怕,这次来一篇纯工程的tricks集合! 如果...

    企鹅号小编
  • 玩弄日志归集于手掌之中

    关注“一猿小讲”公众号的粉丝都清楚,在《傻瓜也能玩转日志归集》一文中,分享过一个业界使用成熟的日志归集方案 EFK。而今天,咱们再谈日志归集,但是今天的分享,却...

    一猿小讲
  • 关于mui 中开发App中fire事件的使用

    我乃小神神
  • 使用aspera从EBI下载fastq数据,抛弃NCBI的SRA数据库吧!

    ENA主页:https://www.ebi.ac.uk/ena/browser/home

    生信技能树
  • 场内场外基金和开户避坑

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    chenchenchen
  • 《吊打面试官》系列 Node.js 全栈秒杀系统

    作为一个在互联网公司面一次拿一次 Offer 的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望地离开,略感愧疚。

    Nealyang
  • Canvas一笔一笔,画出一辆会跑车

      灵感来源于前些天捡到钱了,就想着是时候给自己买辆车了,工作这么多年了应该对自己好一点,在网上搜索了一下看到这个车型。其实几年前是买过一辆的,但是不到一个月就...

    苏南
  • ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码

    Google reCAPTCHA(v3下同) 的使用不需要“梯子”,但申请账号的时候需要!

    乔达摩@嘿
  • 上拉加载下拉刷新了解下

    1.界面上,只分成简单的两块,一块是上方的刷新文字,一块是下方的内容,然后将上方提示内容隐藏在屏幕之外,一般由两种方式,一种是上面遮一层,另一种是marginT...

    IMWeb前端团队
  • pandas越来越难学,只能自己找趣味了,你该这么学,No.11

    pandas啊,全是坑 没错,今天继续学习难的 其实从这篇开始,每一篇都是难得...... 你必须要努力看了

    梦想橡皮擦

扫码关注云+社区

领取腾讯云代金券