1. 程式人生 > >初級程式設計師面試題總結(一):

初級程式設計師面試題總結(一):

本人將這幾天面試的題目總結一些,如果出現錯誤請指正,謝謝。
1,談一談spring。
答:spring是為java程式開發提供的綜合性的基礎java開發平臺,它提供了從表現層SpringMVC到業務層Spring再到持久層springData的一套完整的解決方案。spring的核心有兩大塊,第一塊是AOP,面向切面程式設計,它將程式與業務分離,集中來解決一些公共問題。第二塊是IOC,控制反轉,由容器來幫助物件尋找依賴並實現注入。
spring實現了低耦合,它可以與很多主流框架進行整合,如mybbatis,struts等。
2,談一談spring IOC/DI。
答:IOC,就是將物件的建立權,交給IOC容器來進行管理,IOC幫助物件尋找物件依賴並注入,而不是由物件主動去找。
IOC容器就像一個婚介所一樣,我們先在婚介所登記我們需要怎麼樣的女朋友,然後婚介所會根據條件來為你提供一個女朋友,你需要做的就是和女朋友談戀愛就可以。
3,依賴注入的幾種方式?你一般選擇用哪種注入?
答:三種方式。setter方法注入、構造器注入、介面注入。
一般使用註解注入方式
4,spring 是如何管理bean的?
spring是通過容器來對bean進行管理。通常我們理解的容器有BeanFactory和ApplicationContext.BeanFactory使用了工廠模式,負責讀取bean的配置文件,負責bean的載入,例項化,維護bean之間的依賴關係,負責bean的生命週期。ApplicationContext具有beanfactory的所有功能,同時還提供國際化支援,事件管理,AOP等,因此一般使用ApplicationContext。
spring管理bean的生命週期,先是例項化一個bean,然後使用IOC/DI將需要的物件進行依賴注入,然後進過一系列的呼叫與使用,最後如果bean不再被使用或者容器銷燬則會呼叫destroy方法進行銷燬,生命週期結束。
5,spring的常用註解:
答:@controller,@service,@Repository,@ComPonent
6,springMVC和struts的區別:
答:
(1) springmvc的入口是個DispatcherServlet,前端控制器;struts的入口是一個監聽器
(2)springmvc是基於方法的實現,傳入方法的形參,可以設計為單例模式或者多例模式。struts是基於類的實現,引數為方法的屬性。
(3)struts更符合OOP程式設計思想,springmvc更謹慎,在servlet上擴充套件。
(4)springmvc可以和spring可以認為是零配置,管理方面和安全方面較struts高。
7,為什麼在專案中使用springmvc而不使用struts2?
答:首先,springMVC是基於方法開發的,struts是基於類開發的;
其次,springMVC可以進行單例開發,struts只能進行多例開發;
最後,springMVC的速度比struts快。
8,說一下Mybatis和Hibernate的區別?
答:1,mybatis是輕量級的半自動化框架;hibernate是輕量級的全自動框架;
2,使用hibernate開發時開發量要小一點,不用寫sql語句,全自動生成;mybatis相對工作量要大,需要寫大量的sql語句;
3,mybatis對於sql優化方面要比hibernate好,heibernate會查詢出所有的欄位,效能會有一點損耗;mybatis可以根據需求自己定製sql語句,實現sql優化。
4,hibernate資料庫移植性很強,而mybatis對資料庫的依賴性比較強,更換資料庫一般需要修改sql語句。
9,sql優化。
答:1,對查詢進行優化,避免權標掃描;
2,避免在where子句中對欄位進行null判斷;
3,避免在where子句中使用<>、!=等操作符;
4,少用in、not in;
5,避免使用like;
6,避免在where子句中進行表示式操作;
7,不要使用太多的索引;
8,不要使用select *,應盡力查詢需要的欄位。
10,mysql建立自增長列關鍵詞:auto_increment
11,mysql查詢前10條資料:select * from employee limit 0,10;
12,oracle三層分頁關鍵詞:rownum
13,將一張表資料複製到另一張表:create table sss as (select * from aaa)
14,hashmap和hashtable的區別:
答:hashmap與hasptable都完成了map介面。最主要的區別是hashtable是執行緒安全的,hashtable不是執行緒安全的,在多個執行緒訪問hashtable時,不需要為它的方法實現同步,訪問hashmap的時候需要實現同步。
hashmap允許空的鍵值對,hashtable不允許,因此效率上hashmap要高於hashtable。
15,hashmap的底層實現原理:
答:HashMap底層就是一個數組結構,陣列中的每一項又是一個連結串列。當新建一個HashMap的時候,就會初始化一個數組。(具體自查)
16,ArrayList和LinkedListd的區別:
答:ArrayList是基於陣列的,linkedList是基於連結串列的;
arrayList查詢速度快,新增速度慢;linkedlist新增速度快,查詢速度慢;