第四輪面試題
1.什么是mybatis?
2.什么是spring?
3.什么是SpringMVC?
4.什么是SSM?
5.什么是集合?
6.什么是SpringCloud?
7.什么是Dubbo?
8.什么是消息中間件?
9.eureka和zookeeper的區別?
10.分布式鎖的概念?
一、什么是mybatis?
一種持久層框架,類似於JDBC訪問數據庫的操作,
我們說JDBC使用到的對象有Connection對象,PreparedStatement對象,ResultSet對象。
而Mybatis框架的核心對象有SqlSessionFactoryBuilder對象,SqlSessionFactory對象,SqlSession對象。
並且myibatis框架和hibernate框架最大的區別就在於mybatis它的靈活性比較高。
二、什么是spring?
在spring出來之前,service層調用dao層都是用new的方式。
在spring出來之后,service層和dao層都會放在spring容器去管理,這是spring的第一種特性,我們稱之為IOC,控制反轉。
spring還有一種特性,我們稱之為AOP,大白話,“面向切面”,說白了就是專門的人干專門的事。在項目很多公有的或是
要被重復被調用的模塊可以被抽取出來,利用的就是AOP的特性,例如日志模塊。
三、什么是SpringMVC?
當用戶發送請求到springmvc中的前端控制器中,通過映射器和適配器返回ModelAndView對象到客戶端。這就是SpringMVC的基本原理。
四、什么是SSM?
SSM搭建的版本有很多,例如有一個版本可以這么搭建,兩個核心配置文件web.xml,applicationContext.xml。 1.前端控制器DispatcherServlet 2.過濾器CharacterEncodingFilter applicationContext.xml 1.掃描包 <context:component-scan base-package="cn"/> 2.mvc驅動 <mvc:annotation-driven/> 3.事務驅動 <tx:annotation-driven transaction-manager="txManager"/> 4.配置數據源 5.SqlSessionFactoryBean 6.配置事務 7.數據映射器 8.視圖解析器
五、什么是集合?
集合有兩個父接口,一個Collection,一個Map,而Collection有兩個子接口,一個List,一個Set,List有兩個常見的實現類ArrayList,LinkedList,
Set有兩個常見的實現類HashSet,TreeSet,Map有兩個常見的實現類HashMap,HashTable
六、什么是SpringCloud?
SpringCloud架構中最核心的是Eureka注冊中心,它是一個通訊錄。所有p端和c端都會注冊在上面,cloud中c端調用p端應用feign組件進行調用。應用程序導致網絡請求出現問題時,hystrix組件實現容錯機制。用戶請求量變大是,用ribbon組件實現客戶端的負載均衡。而服務器端的負載均衡通常使用nginx反向代理。SpringCloud中有類似於servlet過濾器的組件,zuul網關組件對整個服務架構進行安全過濾。當使用一個服務調用多個feign組件的時候,sleuth+zipkin組件用來服務追蹤,可以用來調試接口(追蹤問題)。config組件進行統一配置。
dubbo基於RPC,SpringCloud基於RESTful。
七、什么是Dubbo?
Dubbo和Springcloud都是分布式服務中常用的框架。dubbo與cloud不同,dubbo基於RPC協議。它提供了三大核心功能: 面向接口的遠程方法調用,
智能容錯和負載均衡, 以及服務自動注冊和發現。
Dubbo按照分層的方式來架構,可以最大限度地松耦合。Dubbo采用一種非常簡單的模型, 要么提供方提供服務, 要么是消費方消費服務, 所以基於這一點可以抽象出服務提供方和服務消費方兩個角色。
八、什么是消息中間件?
消息中間件利用高效可靠的消息傳遞機制進行異步的數據傳輸,並基於數據通信進行分布式系統的集成。通過提供消息隊列模型和消息傳遞機制,可以在分布式環境下擴展進程間的通信。
九、eureka和zookeeper的區別?
首先他們都是服務注冊和發現的功能,cloud一般選擇eureka作為注冊中心,dubbo一般選擇zookeeper作為注冊中心。基於CAP原則,eurek是AP原則,即可用性和分區容錯性,zookeeper是CP原則,即強一致性和分區容錯性。
十、分布式鎖的概念?
在分布式系統中,由於分布式系統的分布性,即多線程和多進程並且分布在不同機器中,這兩種鎖將失去原有鎖的效果,需要我們自己實現分布式鎖——分布式鎖。
在多線程的環境下,多個線程同時訪問同一個資源,導致線程不安全,使用分布式鎖來解決這個線程安全問題。
分布式搶購用到分布式鎖,上鎖;第二個用戶要等待第一個用戶完成才能進行搶購;利用setnx設置解決安全性問題,缺點是性能過低。