初級程序員實戰面試寶典(一)

前言:javascript

      此文章是本人對以往知識的一個總結以及面試中有可能或者已問到的一些問題的總結,此非很是基礎的知識,閱讀此面試題以前請先學習完必備的基礎知識。當你看到這篇文章的時候若是你是一個初級程序員應聘者,那麼,恭喜你!你的成功率已經提升了百分之五十!果真你發現文章中有錯誤的地方,歡迎指出!java

1,hibernate怎麼進行性能優化?mysql

      1.使用抓取策略fetch,使用join減小sql語句。2.恰當使用load延遲加載。3.開啓二級緩存。jquery

 

2.什麼是二級緩存?程序員

      一級緩存是session級別的緩存,屬於事務範疇,無須干預。二級緩存是sessionFactory級別的緩存,屬於進程範圍的緩存,其策略是針對ID查詢的緩存策略,對於條件查詢則毫無做用,二級緩存須要配置。不多被修改的不是私有的,共享數據適合放在二級緩存中。web

 

3,hibernate查詢語句有哪幾種?面試

        HQL,原生sql ,QBC , load延遲加載, get即時加載(在開發過程當中用qbc的find方法時遇到一個問題,一個可變參數就是用不了,後來發現是個版本的bug,忘記幾點幾了)ajax

 

4,hibernate三種狀態?spring

    1.臨時狀態。2.持久狀態。3.遊離狀態。他們本質就是一個oid和歸入緩存的問題sql

 

5,數據索引索引有幾種?

     自建索引和數據庫索引兩種,自建索引須要本身維護,數據庫索引由數據維護

 

6.springmvc中經常使用的註解?

    @RequestMapping請求地址 @Controller控制器  @ResponseBody標註在方法上,該方法返回的數據爲json數據 @RestController請求體標註在類上,表示該類返回的都是json數據

 

7.Oracle分頁,經常使用函數?

    select*from(select A.*, rownum rn from (select*from students) A where rownum <=5)where rn>=2;Oracle沒有limit,經過僞列Ruwnub進行分頁;

    經常使用函數:NVL(expr1,expr2)爲空返回2,不然返回1 

         NULLTP(expr1,exper2)相等返回空,不然返回1

         組函數:AVG()求平均值;MAX()求最大值;MIN()求最小值;SUM()求總和;COUNT()求總數

 

8.jQuery$(document).ready(function(){})window.onload有何區別

    ①,window.onload必須等到頁面全部元素包括圖片加載完畢後才能執行,$(function(){})Dom結構加載完畢後就執行

    ②,window.onload在整個頁面只會執行一個,$(function(){})能夠寫多個而且都會執行

    ③,window.onload沒有簡化寫法,$(document).ready(function(){})能夠寫成$(function(){});

 

9.經常使用的IO流?

    字節流和字符流。字節流如:InputStream,OutputStream;字符流如:Reader,Writer;

 

 10.PowerDesigner用來幹嗎

    PowerDesigner是一個數據庫建模工具。

 

11.tomcat怎麼改端口號,mysql,oracle,tomact的默認端口號是什麼。

    在Servier.xml文件裏面改,mysql是3306,oracle是1521,tomcat是8080

 

12.http協議連接的三次握手四次揮手是什麼?

    1.客戶端首先發起第一次握手,向服務端傳數據;

    2.服務端聽到後若是表示能夠接受數據,則向客戶端發起第二次握手;服務端的此次握手也是在詢問,你能接受我返回給你的數據嗎?;

    3.接着客戶端發起第三次握手告訴服務端,是的,我也能接受你返回給個人數據,OK鏈接創建成功。

    四次揮手:關閉鏈接須要四次揮手

 

13.struts2核心是什麼,怎麼構建本身的攔截器棧?

是攔截器,攔截器棧是自定義攔截器加默認攔截器,再把默認攔截器棧改爲自定義攔截器棧

 

14.iocdi是什麼,關係是什麼

    ioc控制反轉(是一種設計思想),di(依賴注入)是對控制反轉設計思想的一種具體實現,他們加上AOP就是spring的核心

 

15.AOP是什麼

    AOP面向切面編程,將核心業務和橫向通用邏輯(事務管理,日誌管理,安全管理等等)分爲兩部分,當咱們執行到核心業務邏輯的時候,能夠經過AOP在這以前或者以後執行某些操做,對模塊的功能作擴充,而且不影響核心業務邏輯的代碼,作到充分的鬆耦合

 

16.jsp9大內置對象?

    requestresponsepagecontextsessionapplicationoutconfigpageexception

 

17.數據庫建模的三大範式?

    第一:原子性不可拆分,第二:除主鍵之外的其餘列,必須依賴主鍵,第三:除主鍵之外的其餘列不存在傳遞依賴。而且三大範式是層層緊密相連,第三大範式必須知足第一第二大範式,第二範式必須知足第一大範式。

 

18.事務的四大特性是什麼?

    1. 原子性(Atomicity),事務是數據庫的最小邏輯工做單位,事務中包括的各個操做要麼全作,要麼全不作。

    2. 一致性(Consistency),事務執行的結果必須是使數據庫從一個一致性狀態變到另外一個一致性狀態。一致性與原子性是密切相關的。

    3. 隔離性(Isolation), 一個事務的執行不能被其餘事務干擾。

    4. 持續性(Durability), 一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。

 

19.js經常使用的方法

數組:split()將一個字符串用指定字符拆分爲一個數組

     push()設置值,返回數組的長度

     join()返回字符串,用指定的字符串拼接起來

     sort()裏面能夠寫function函數

字符串:concat()拼接

       indexof()查找指定的字符,沒有返回-1

       substring()從指定位置開始截取元素,多個參是截取範圍,前面包含後面不包含

       toLowerCase()元素轉大寫

       toUpperCase()元素轉小寫

 

20.jquery經常使用的方法

    click(),remove(),add(),addClass(),val(),get(),得到焦點,失去焦點,

 

21.ajax的原理

    經過瀏覽器的內置對象實現頁面無刷新加載(ie的內置對象activeXObject,IE xmlhttprequest)提升用戶的瀏覽體驗

 

22.自定義多線程的兩種方式?

繼承Thread類和實現Runnable接口

 

23.java線程池的原理是什麼?

線程池原理應該是能夠減小線程建立和銷燬時間

1,線程池管理器(ThreadPool):用於建立並管理線程池,包括 建立線程池,銷燬線程池,添加新任務;

2,工做線程(PoolWorker):線程池中線程,在沒有任務時處於等待狀態,能夠循環的執行任務;

3,任務接口(Task):每一個任務必須實現的接口,以供工做線程調度任務的執行,它主要規定了任務的入口,任務執行完後的收尾工做,任務的執行狀態等;

4,任務隊列(taskQueue):用於存放沒有處理的任務,提供一種緩衝機制。

 

24.什麼是mvc

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種設計模式。

 

25.ArrayListlinkList的區別

都是list接口的實現類

ArrayList是以數組形式保存對象,插入刪除比較慢,查詢直接根據下標比較快

Linklist它將數組存在獨立的空間中,插入刪除比較快,查詢須要所有遍歷出來比較慢

 

26.hashSet如何設置值

首先將對象的HashCode與已經存在的對象的HashCode比較,若是不一樣(確定爲不一樣的對象)直接塞進去;若是HashCode與已經存在的對象的HashCode相同,會再進行equals()內容比較,若是相同會覆蓋

 

27.collectioncollections區別

collectionjava.util包下面的一個集合框架接口

collectionsjava.util下面的一個包裝類,包含一些集合操做的靜態多態方法,服務於Collection框架。

 

28.mybatis如何調用存儲過程

 <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
        CALL mybatis.ges_user_count(?,?)
    </select>
    
    <!--
        parameterMap.put("sexid", 0);
        parameterMap.put("usercount", -1);
     -->
    <parameterMap type="java.util.Map" id="getUserCountMap">
        <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
        <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
    </parameterMap>

 

29.spring的核心是什麼?

ioc控制反轉設計思想. di控制反轉(思想的一種實現),aop面向切面編程

 

30.easyui經常使用組件有哪些?

 Pagination(分頁), ProgressBar(進度條),layout(佈局東南西北),Accordion(分類),Tabs(選項卡),Button組件。

 

31.面向對象三大基本特徵?

封裝,繼承,多態,抽象

多態:分爲編譯時多態和運行時多態,前者經過重載實現後者經過方法覆蓋實現,即子類重寫父類方法

 

32.重載和重寫的區別?

重載是發生在一個類中間方法名相同,參數類型,參數個數或者順序不一樣不一樣。

重寫是發生在父類和子類之間,方法名相同,參數類型列表相同,返回值類型相同。

 

33.listset區別?

都是Collection下面的接口

list是有序的,set是無序的

set元素不可重複,list能夠

 

34.請求轉發和重定向概念和區別?應用場景是什麼?

請求轉發是發送一條請求,重定向發送兩條請求.

請求轉發主要用於查詢,重定向主要應用於增刪改,防止用戶重複提交表單對咱們數據庫形成沒必要要負擔。

 

35.servlet生命週期

1,初始化階段  調用init()方法

2,響應客戶請求階段,調用service()方法

3,終止階段,調用destroy()方法

 

36.jsp的本質是什麼?

就是一個Servlet,一個.java文件。

 

37.jsp執行流程?

客戶端向服務器發送一條請求,請求一個jsp文件,沒找到直接返回404(找不到頁面),找到則判斷是不是第一次或者修改後的第一次訪問,若是不是直接執行對應的.class文件,若是是將其編譯成Servlet程序,再編譯成.class文件執行

 

38.數據庫的事務隔離級別?

讀未提交,讀提交,可重複讀,可串行化;(要去詳細瞭解他們,這個很是重要)

 

39.冒泡排序?

int[] arr = {1,5,7,2,3,5,9};

public int[] sort(int[] arr){

    int temp = 0;

    for(int i=0; i<arr.length; i++){

for(int j=i+1; j<arr.length; j++){

            if(arr[i] > arr[j]){

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

    }

}

    }

}

 

40.Restful風格的請求?

spring mvc裏面的:以往咱們請求方式都會採用getpost(其實仍是有PUTDElETE兩種,總過四種), 如今post, delete,get, put各類請求分別對應增,,,

 

41,struts2的原理是什麼?

客戶短髮送一個HttpServletRequest請求,通過一系列的過濾器走到攔截器棧,經過配置文件定位到對應的Action(一個action是一個對象)的對應方法執行操做,action執行完畢後返回一個result字符串,此時再按相反的順序經過攔截器棧,根據struts.xml配置找到與之對應的result標籤

 

42 .class文件能夠直接執行嗎?

不行,要經過JVM執行。

 

43 ajax如何變成同步請求?

async:false     // false 時爲同步,默認爲true異步

 

44 waitsleep有何區別?

wait會釋放線程鎖,sleep不會

 

45notifynotifyall區別?

notyfy是隨機喚醒一個,notyfyAll是喚醒全部

 

46.webservice

用過:是基於socket協議,就是httpxml,wsdl有契約優先和編碼優先,契約優先是先設計wsdl文件,編碼優先就是先編碼webservice,而後由被調用的一方提供wsdl文件(如天氣預報接口;wsdlxml文檔)

 

47.值棧和棧?

這是struts2的概念,每個action都對應着一個actionContext,strutsactionContext做爲Ognl(表達式語言)的上下文,actionContextValueStack做爲上下文的根對象,ValueStack將當前用戶所請求的Action壓入棧頂

 

48.hashSet如何校驗兩個值是否相同?

先比較兩個值的hashCode碼是否相同,若是不一樣值(元素)確定也不一樣,不然再比較值(元素)

 

49.jdk1.51.61.71.8增長了哪些特性?

1.5增長了泛型,包裝類型,自動拆箱裝箱,for加強

1.6增長了對腳本語言的支持如:javascript,使用JAXB2來實現對象與XML之間的映射

1.7增長了switch中可使用字符串(之前只有這四種:int,short,char,bytr),try catch異常撲捉中,一個catch能夠寫多個異常類型,用"|"隔開

1.8增長了lambda表達式,函數式接口

 

50.觸發器

沒用過簡單瞭解過,觸發器是由一個事件來啓動運行,當某個事件發生時自動的隱式運行,能夠在dml(數據操做語言)語句觸發,能夠在操做前或後進行觸發,當執行某個操做自動觸發另外一個操做

 

51,數據庫分爲幾種語言(簡單講下每種是分別作什麼的)

DML(Data Manipulation Language)數據庫操做語言,對數據庫中表的增,,,改操做,好比insert, delete, select ,update

DDL(Data Definition Language)數據庫定義語言,對錶對象或者索引對象的操做,好比create table建立表,alter table修改表,drop table刪除表,create index建立索引,drop index刪除索引

DCL(Data Control Language)數據庫控制語言,對數據庫的訪問控制,好比grant受權,revoke撤銷權限,commit事務提交,rollback事務回滾

 

52,常見的數據庫對象有哪幾種?

,視圖(從表中抽出的邏輯上相關的數據集合),序列,索引,同義詞(別名)

 

53.hibernate原理是什麼?

經過hibernate的核心配置文件hibernate.cfg.xml創建表與表之間合理的映射關係,實例化sessionFactory建立session對象,經過session對象來進行數據庫的操做。

 

54.springmvcstruts2的區別?

springmvc是方法級別的請求響應,spring mvc的入口是servlet

struts是類級別的請求響應,struts2filter過濾器

SpringMVC開發效率和性能高於Struts2,能夠說是100%零配置

 

55,springbean的做用範圍(做用域)?

Singleton做用域,request做用域,session做用域,還有好幾種每種的細節不一 一解釋了,本身查資料

 

 

56,struts2要執行一個Action須要作些什麼(應該問的是怎麼配置action)?

題目還或許問的是執行action以前須要執行寫什麼?      :過濾器和攔截器

首先建一個存放actionxml文件(好比sturts-demo.xml),使用<package>標籤把一個個action封裝,在覈心配置文件struts.xml 中用<include>標籤中的file屬性,引入action配置的文件的全文件名

 

57,怎麼用java代碼生成一個不重複的32位的什麼鬼id(應該是uuid)?

Java.util下面有個UUID,UUID類中的randomUUID()方法,隨機生成便可

 

58,maven用來作什麼的

Maven是代碼的管理工具,編譯,發佈,部署等,有一個pom.xml的文件能夠自動管理所需jar包的版本

 

 59,UML是什麼?

統一建模語言or標準建模語言

 

 

60,搭建開發環境,spring+spring mvc+mybatis搭建(下面直接百度貼來的)?

1、首先是SpringMybatis整合,具體步驟爲jdbc.properties(數據庫鏈接信息)->mybatis.configMyBatis的別名信息)->mapper(「SQL語句」和「DAO」之間的映射關係)->Spring-MyBatis(將映射關係注入到DAO)

2DAO層撘完搭Service層,這裏採用「註解」的方式,直接在ServiceImpl中註解@Service,裏面的屬性採用@Autowired,並在Spring-MyBatis.xml裏面添加<context:component-scan base-package="com.demo.ServiceImpl"/>就可以自動注入了,Service層搭建成以後,進行單元測試,沒問題了再繼續

3、搭建Controller層,主要注意:web.xml要讀取Spring-MyBatis.xml。在用Spring-mvc.xml構建Controllerbean時,也採用註解方式,主要是使用@Controller@Autowired,這種方式要求把前面的DAO層配置文件中的<context:component-scan base-package="com.demo.ServiceImpl"/>刪掉,並在Spring-mvc.xml中添加<context:component-scan base-package="com.demo"/>,並且咱們 採用@RequestMapping驅動Controller,在Spring-mvc.xml中添加<mvc:annotation-driven />,至此,工程搭建完畢

 

 

 

61,實現同步的有哪幾種?

分別是synchronized,waitnotify

 

62,hibernate有那些主鍵策略(其實還有幾種)?

assigned由程序生成主鍵值,主鍵的生成值徹底由用戶決定,與底層數據庫無關。

foreign使用外部表的字段做爲主鍵。

increment自動增加,會從數據庫中查詢主鍵的最大值,而後+1,再插入

uuid字符串,全球惟一標識符

identityIdentity 當時根據底層數據庫,來支持自動增加,不一樣的數據庫用不一樣的主鍵

增加方式。要求數據庫支持Identity(SQL SERVER MYSQL)

 

63,hibernate主鍵xml配置怎麼配置?

每種主鍵策略配置都稍有不一樣,不過通用都是用<id>標籤,name屬性type屬性,name指定主鍵字段名,type指定主鍵數據類型,而後<id>標籤內部還須要配置<generator>標籤,使用calss屬性來指定主鍵策略

 

64,spring的注入方式有哪幾種?

對象依賴注入,構造方法的注入,還有其餘數據的注入包括:通常數據的注入,map注入,list注入,set注入

 

65,Mybatis怎麼返回主鍵?

用到兩個屬性useGeneratedKeys="true" keyProperty="id"

 

 

 

66.Srpingbean的做用域不配置的話,默認是什麼?

Applaiction全局的

 

67.關於協議這一塊tcp,http,https,socket,soap,wsdl你們都要去了解一下,作什麼用的。

 

還有一部分題目,請見第二章,祝各位求職者求職順利!

相關文章
相關標籤/搜索