獻給正在應聘JavaWeb工程師的畢業生

以下內容分享,是我應屆畢業面試JavaWeb工程師的一些經驗總結,供大家參考,希望能給正在找工作的同學朋友們一點幫助。


先總結一下筆試中常見的問答題。


一、java 中都有哪些作用域

    1、public:public表明該數據成員、成員函數是對所有用戶開放的,所有用戶都可以直接進行調用 

    2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。 

    3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。 


作用域       當前類    同一package   子孫類     其他package 

public             √            √                   √               √ 

protected       √             √                   √               × 

friendly           √            √                   ×               × 

private            √            ×                   ×               × 

不寫時默認爲friendly 


二、String與StringBuffer的區別

    String的長度是不可改變的,StringBuffer的長度是可以改變的。如果對字符串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,使用StringBuffer的toSting()方法。


三、多線程:

    多線程實現的2種方式和區別一定要掌握。


四、Jsp的內置對象

   JSP共有以下9種基本內置組件:request,response,pageContext,session,application,out,config,page,exception。       

Request:用戶端請求,此請求會包含來自GET/POST請求的參數,       Response:網頁傳回用戶端的迴應,pageContext:網頁的屬性是在這裏管理,session:與請求有關的會話期,application:  servlet正在執行的內容,out:用來傳送回應的輸出,config:servlet的構架部件,page:JSP網頁本身,exception:針對錯誤網頁,未捕捉的例外。


 五、Servlet的生命週期  

    Servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet接口的init,service和destroy方法表達。Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷燬時調用其destroy方法。

六、Jsp和Servlet有哪些相同點和不同點

    JSP是Servlet技術的擴展,本質是Servlet的簡易方式,強調應用的外表表達。JSP編譯後是"類servlet"。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裏分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名爲.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。


七、ArrayList和LinkedList的區別

    ArrayList 採用的是數組形式來保存對象的,這種方式將對象放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩

LinkedList 採用的將對象存放在獨立的空間中,而且在每個空間中還保存下一個鏈接的索引  但是缺點就是查找非常麻煩 要叢第一個索引開始

 

八、String Stringbuffer和StringBuilder的區別

    StringBuffer是線程安全的可變字符序列,從 JDK 5 開始,爲該類補充了一個單個線程使用的等價類,即 StringBuilder。單個線程使用的時候(這種情況很普遍),建議優先採用該類,因爲在大多數實現中,它比 StringBuffer 要快。

       

下面是一些程序題


一、自己寫一個單例,Singleton

單例模式的核心就是構造方法私有化。

public class Singleton {

        private Singleton(){}         //構造方法私有化

        private static final Singleton sin = new Singleton();

        public static Singleton getInstance(){

                return sin;

        }

}


二、寫一段連接數據庫的程序,或是描述一下它的實現步驟。

     //定義數據庫驅動程序

     String DBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver";

     // 定義數據庫連接地址

      String DBURL="jdbc:odbc:mydb";

      //定義數據庫連接對象

      Connection conn=null;

      //定義Statement對象用於操作數據庫

      Statement stmt=null;

      //定義一個字符串變量,用於保存sql語句

      String sql=null;

    //1.加載驅動程序

    try{

      Class.forName(DBDRIVER);

     }catch(Exception e)

     {

      out.print("數據庫驅動程序加載失敗!!!"); 

     }

    //2.連接數據庫

    try{

      conn=DriverManager.getConnection(DBURL);

    }catch(Exception e)

    {

     out.print("數據庫連接失敗!!!");

    }

    //3.操作數據庫

    //通過Connection對象實例化Statement對象

    try{

      stmt=conn.createStatement();

      //爲sql變量賦值

      //sql="insert into person (name,password,age)values('name','123456',23)";

      //更新語句

      //sql="update person set name='myName',password='myPsw',age='24' where id=3";

      //按ID刪除記錄

      sql="delete from person where id=4";

      //通過Statement對象執行sql語句

      stmt.executeUpdate(sql);

    }catch(Exception e)

    {

     out.print("操作數據庫失敗!!!");

    }

    //關閉結果集、會話和連接

    關閉順序是,結果集rs,會話stmt,連接conn。

注意:

此時有可能會問PreparedStatement 和Statement的區別之類的。

應該始終以PreparedStatement代替Statement.也就是說,在任何時候都不要使用Statement。

1、代碼的可讀性和可維護性。

2、PreparedStatement盡最大可能提高性能。

3、最重要的一點是極大地提高了安全性。防止SQL注入。


如果談到SQL注入,面試者一般都會問你什麼是SQL注入,讓你說一個SQL注入的sql語句。

所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。隨着B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也越來越多。但是由於程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。

SQL注入的sql語句:

String sql = "select * from tableName where name= '"+varname+"' and passwd='' or '1' = '1';

因爲'1'='1'肯定成立,所以可以任何通過驗證。


還有一些程序改錯題。一般會有2道題目。

關於abstract,final知識的居多。面試之前看看應該沒問題。

還有正則、Javascript和jquery等問題。

剩下很大部分是關於數據庫的。因此必須熟練SQL語句的操作。在高級的會問存儲過程。對現在主流的數據庫應該有自己的瞭解。

 

筆試過了,會安排項目經理面試。

和項目經理談,涉及到工作態度,加班,出差,執行力,程序員的基本素質等問題。還有談談你對項目的認識,還有一些具體項目中的一些問題。只要回答的流暢,說出自己的看法,有道理就行,一定要謙虛,不要不懂亂說,不會的可以說在這方面瞭解的少,以後多加學習什麼的。也可能會問到你的職業規劃,你的學習能力等。自己回答的時候多從自己不斷的學習和努力上面靠,就是要突出自己的吃苦耐勞精神和積極進取精神。涉及到出差的話,會問你有沒有對象,考慮什麼時候結婚,在這個問題上,說自己有對象也沒事,主要還是看處理工作和家庭的態度。還有要注意團隊的重要性,不要個人英雄主義。


寫了一些自己的經驗,希望對正在找工作的同學朋友,會有所幫助,找到工作的同學看了權當消遣一下。


祝大家能找到自己理想的工作,加油!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章