学习

17、Dubbo是在什么背景下被开发的?

Dubbo就是一种RPC框架

传统项目中,所有的功能模块都部署在一台服务器上,如果某一个模块出现了问题,都影响整个项目的运行;所以要根据功能模块将项目分开,这就是分布式的来源。每个系统可能还有配置多台服务器Tomcat;那么各个系统如何联系和调用呢?就需要微服务实现服务的自动发现,而dubbo是微服务的一种最佳实现;其中最关键的就是zookeeper;

Dubbo是微服务的一种框架,基于RPC进行远程传输数ti据,传输的是对象(先序列化);微服务其实就是服务的自动发现,实现对资源的控制,使人参与的事情越来越少,最终实现的是服务器全部的自动发现;

Dubbo 整合了SOA(面向服务的架构)思想、微服务和RPC,是SOA思想的一种最佳实现,也是微服务中的一种,另一种springCloud;

所以要讲Dubbo,就要先说微服务,最关键的是zookeeper,即注册中心;

18、spring中哪些常用的注解?

    @Controller、@RequestMapping、@Autowired、@ResponseBody、 @PathVariable、@Service、@Override

    @Table、@Id

19、springBoot有哪些优势?

不用生成xml配置文件,不用部署Tomcat、不用写web.xml,需要写yml文件

20、Token是基于什么算法生成的?如果token存于Cookie中,别人可以模仿Cookie去获取token?如何解决?

存于session

21、项目中在哪里用到了反射?

框架中用到反射比较多点,项目中代理模式的使用需要用到反射;

22、Redis会有主从分离吗?

有,“从”负责备份,“主”负责查询,当主机宕机又恢复后会从从机里恢复数据;

23、Redis 如何实现高可用?

Redis 高可用技术是为了解决 redis 宕机后影响整个服务的一种架构方式.主要采用主从结构来实现高可用.(主从挂载)

高可用实现的方式有哨兵和集群 2 种方式.主要思想都是监听主节点的信息. 我们把这种监听方式称之为心跳机制.

当在规定的时间内主节点没有响应,则判断主节点死亡.则会启动从节点代替主节点为用户提供服务.

Redis 分片机制是将多 reids 看做一个整体,每个 redis 只负责一个固定的区域.进行数据的更新和维护.这种方式的实现主要是基于 hash 一致性算法.根据 key 值计算出 hash 的位置,最终将数据保存.并且这个 key 值指向管理该区域的点

四、数据库相关(mysql)

1、有没有msyql优化经验?(苏宁)

2、mysql的索引分类?

     索引的建立一般在where上

3、唯一索引、主键索引的区别?(苏宁)

      唯一索引列的值必须唯一,但允许有空值。

      主键索引是一种特殊的唯一索引,不允许有空值

4、聚簇索引和非聚簇索引的区别?(携程)

     在访问速度上,聚簇索引比非聚簇索引

5、mysql的存储引擎有哪些,区别是什么;

      Innodb

6、说说事务的特性和隔离级别(MySQL默认的隔离级别是?)(饿了么)

事务的特性:ACID

默认隔离级别:可重复读Repeatable  read

隔离级别

脏读

不可重复读

幻读

读未提交  Read  Uncommitted

读已提交 Read  Committed

可重复读Repeatable  read

可串行化 Serialiable

7、你们的项目中,是怎么控制事务的?

      利用AOP

8、左外连接、右外连接、全连接;自然连接、内连接等概念?(饿了么)

      内连接:  a   inner   join   b     on 条件

      左外连接: a   left   join   b     on  条件

      右外连接: a   right   join   b    on 条件

      全连接: a   full   join   b     on  条件 

9、如何确定SQL是否走了索引?

       explain 显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。

  explain 关键字的使用方法很简单,就是把它放在select查询语句的前面。

  mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。比如:explain select * from company_info where cname like '%小%';

10、不走索引的情况有哪些,索引失效。(苏宁、饿了么)

       1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)

       2.对于多列索引,不是使用的第一部分(第一个),则不会使用索引

       3.like查询是以%开头

       4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

       5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

11、动手写几个简单的sql语句(涉及到分组、排序、聚集函数等)

12、MySQL使用自增ID主键和UUID主键的比较?

    (1)单实例或者单节点组:

经过500W、1000W的单机表测试,自增ID相对UUID来说,自增ID主键性能高于UUID,磁盘存储费用比UUID节省一半的钱。所以在单实例上或者单节点组上,使用自增ID作为首选主键。

    (2)分布式架构场景:

         20个节点组下的小型规模的分布式场景,为了快速实现部署,可以采用多花存储费用、牺牲部分性能而使用UUID主键快速部署;

         20到200个节点组的中等规模的分布式场景,可以采用自增ID+步长的较快速方案。

         200以上节点组的大数据下的分布式场景,可以借鉴类似twitter雪花算法构造的全局自增ID作为主键。

13、数据库连接池你们用的哪种,为什么采用该连接池?

       开源数据连接池:dbcp、c3p0、proxool

       商业中间件连接池:weblogic、websphere

14、查出表中有重复的id的记录,并计算相同id的数量 

select id,count(id) from table group by id having(count(id)>1); //having  对多段函数进行筛选

六、介绍项目

1、你在项目中踩过的坑有哪些,举例说明。

2、你刚才介绍的项目里是用什么手段解决高并发?(网易)

3、你们数据库数据量是什么量级的?

4、你刚才介绍的这个项目部署在几台机器上?

5、你们的项目中如何记录错误日志?

6、你刚才的项目说到了反射,反射的优缺点你知道吗?

     优点:反射提高了Java程序的灵活性和扩展性,降低耦合性,提高自适应能力。

     缺点是性能问题:使用反射基本上是一种解释操作,影响代码的执行效率。用于字段和方法接入时要远慢于直接代码。因此Java反射机制只要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。

使用反射会模糊程序内部逻辑:程序员希望在代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。

7、你们项目中的定时任务是怎么做的?(答:定时任务不是我做的)

8、你们的redis数据库占多大磁盘空间?

9、有没有解决过一些线上的bug?

10、如何实现一个账号不得同时登陆?

当用户在A端登录时,先生成一个状态值,和UserDB一起存入数据库,当用户在另B端登录时,先做一个判断,true or false,判断那个状态码,然后再进行操作;比如说,当状态码为true时可以让A端下线,或者让B端提示已登录;

七、其他方面

1、servlet的两种主要的跳转方式forward和redirect区别?

     重定向(redirect)相当于直接在地址栏输入一个新的网址,这个网址自然会显示在地址栏上,当然是 

     可见的。

     转发(forward)就是从其他页面跳转过来,跳转后显示在眼前页面的地址并不是当前页面的地址,而

     是上一个页面的地址(或servlet处理上一个页面请求的地址),因此,当前页面的地址当然是不可见的。

2、画一画tcp三次握手,四次挥手示意图。

     

注:为什么建立连接是三次握手,关闭连接确是四次挥手呢?

建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK(acknowledge)和SYN放在一个报文里发送给客户端。

而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

3、计网里常见简写含义?

SMTP:简单邮件传输协议,应用层

ICMP:互联网控制消息协议,是TCP/IP协议族的一个子协议

TCP:传输控制协议

UDP:用户数据报协议

ARP:地址解析协议

FTP:文件传送协议

DNS:域名解析协议

HTTP:超文本传输协议

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值