記錄某公司(簡(jiǎn)稱SMKJ) 的一次面試

昨天去了一家公司面試 Java 開(kāi)發(fā)崗位,這篇文章主要是做一個(gè)面試的記錄以及總結(jié)。

這家公司的規(guī)模大概100-200人遍略,環(huán)境還可以慢味,在一棟大廈租了兩層辦公室(31層和32層)。一同搭電梯上去的還有一位去應(yīng)聘測(cè)試崗位的妹紙??

這里要吐槽一下該公司的前臺(tái)墅冷,由于跟HR約好了是在31樓面試纯路,我和測(cè)試妹紙都去了31樓的前臺(tái),31樓的前臺(tái)直接讓我們?nèi)巧险?2樓的前臺(tái)寞忿,32樓的前臺(tái)找了樓下31樓的面試官驰唬,結(jié)果又把我們帶回樓下31樓面試。

首先填了一份個(gè)人信息表腔彰,然后直接進(jìn)入面試環(huán)節(jié)(沒(méi)有筆試 ??)叫编。

以下是面試時(shí)一些問(wèn)題的記錄:

1、面向?qū)ο蟮娜筇匦?/h2>

答:封裝霹抛、繼承搓逾、多態(tài)。

2杯拐、XML解析

答:
1霞篡、解析方式

  • DOM:Document Object Model,文檔對(duì)象模型端逼。這種方式是W3C推薦的處理XML的一種標(biāo)準(zhǔn)方式朗兵。

缺點(diǎn):必須讀取整個(gè)XML文檔,才能構(gòu)建DOM模型顶滩,如果XML文檔過(guò)大余掖,造成資源的浪費(fèi)。
優(yōu)點(diǎn):適合對(duì)XML中的數(shù)據(jù)進(jìn)行操作(CRUD)礁鲁。

  • SAX:Simple API for XML盐欺。這種方式不是官方標(biāo)準(zhǔn),屬于開(kāi)源社區(qū)XML-DEV仅醇,幾乎所有的XML解析器都支持它冗美。

2、解析工具

  • JAXP:

DOM或SAX方式進(jìn)行解析XML着憨。API在JDK之中墩衙。

  • Dom4J:(推薦)

是開(kāi)源組織推出的解析開(kāi)發(fā)包务嫡。(牛甲抖,大家都在用,包括SUN公司的一些技術(shù)的實(shí)現(xiàn)都在用)

3心铃、反射

答:當(dāng)我們的程序在運(yùn)行時(shí)准谚,需要?jiǎng)討B(tài)的加載一些類,這些類可能之前用不到所以不用加載到j(luò)vm去扣,而是在運(yùn)行時(shí)根據(jù)需要才加載柱衔,這樣的好處對(duì)于服務(wù)器來(lái)說(shuō)不言而喻樊破。

舉個(gè)例子,我們的項(xiàng)目底層有時(shí)是用mysql唆铐,有時(shí)用oracle哲戚,需要?jiǎng)討B(tài)地根據(jù)實(shí)際情況加載驅(qū)動(dòng)類,這個(gè)時(shí)候反射就有用了艾岂,假設(shè) com.java.dbtest.myqlConnection顺少,com.java.dbtest.oracleConnection這兩個(gè)類我們要用,這時(shí)候我們的程序就寫得比較動(dòng)態(tài)化王浴,通過(guò)Class tc = Class.forName("com.java.dbtest.TestConnection");通過(guò)類的全類名讓jvm在服務(wù)器中找到并加載這個(gè)類脆炎,而如果是oracle則傳入的參數(shù)就變成另一個(gè)了。這時(shí)候就可以看到反射的好處了氓辣,這個(gè)動(dòng)態(tài)性就體現(xiàn)出java的特性了秒裕!

舉多個(gè)例子,大家如果接觸過(guò)spring钞啸,會(huì)發(fā)現(xiàn)當(dāng)你配置各種各樣的bean時(shí)几蜻,是以配置文件的形式配置的,你需要用到哪些bean就配哪些体斩,spring容器就會(huì)根據(jù)你的需求去動(dòng)態(tài)加載入蛆,你的程序就能健壯地運(yùn)行。

4硕勿、Java 8 新特性

  • Lambda 表達(dá)式:Lambda允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)哨毁。

  • 方法引用:方法引用提供了非常有用的語(yǔ)法,可以直接引用Java的類方法源武、對(duì)象方法或者構(gòu)造器扼褪。

5、Lambda 表達(dá)式

Lambda 表達(dá)式我們可以理解為對(duì)于函數(shù)式接口和其中的抽象方法的具體實(shí)現(xiàn)粱栖。

Lambda 表達(dá)式可以認(rèn)為是一種特殊的匿名內(nèi)部類话浇,Lambda只能用于函數(shù)式接口。

lambda語(yǔ)法如下:

     ([形參列表闹究,不帶數(shù)據(jù)類型]) -> {
         //執(zhí)行語(yǔ)句
         [return..;]
     }

代碼演示如下:

public class TestLambda {  
     public static void main(String[] args) {  
           TestLambdaInterface1 t1 = new TestLambdaInterface1() {  
                @Override  
                public void test() {  
                     System.out.println("使用匿名內(nèi)部類");  
  
                }  
           };  
           
           //與上面的匿名內(nèi)部類執(zhí)行效果一樣  
           //右邊的類型會(huì)自動(dòng)根據(jù)左邊的類型進(jìn)行判斷  
           TestLambdaInterface1 t2 = () -> {  
                System.out.println("使用lambda");  
           };  
           t1.test();  
           t2.test(); 
     }
}

@FunctionalInterface  
interface TestLambdaInterface1 {  
     //不帶參數(shù)的抽象方法  
     void test();  
}  

6幔崖、設(shè)計(jì)模式

單例模式

單例模式:確保一個(gè)類只有一個(gè)實(shí)例,并提供了一個(gè)全局訪問(wèn)點(diǎn)渣淤。

實(shí)現(xiàn):

  • 使用一個(gè)私有靜態(tài)變量赏寇、一個(gè)私有構(gòu)造函數(shù)以及一個(gè)公有靜態(tài)函數(shù)來(lái)實(shí)現(xiàn)。

  • 私有構(gòu)造函數(shù)保證了不能通過(guò)構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象實(shí)例价认,只能通過(guò)公有靜態(tài)函數(shù)返回唯一的私有靜態(tài)變量嗅定。

public class Singleton {

    private static Singleton instance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

代理模式

發(fā)布訂閱模式

MVC 模式

7、Hibernate 的一級(jí)緩存用踩、二級(jí)緩存

Session 的緩存被稱為 Hibernate 的第一級(jí)緩存渠退。SessionFactory 的外置緩存稱為 Hibernate 的二級(jí)緩存忙迁。這兩個(gè)緩存都位于持久層,它們存放的都是數(shù)據(jù)庫(kù)數(shù)據(jù)的拷貝碎乃。SessionFactory 的 內(nèi)置緩存 存放元數(shù)據(jù)和預(yù)定義 SQL姊扔,SessionFactory 的內(nèi)置緩存是只讀緩存。

緩存的作用:

  • 減少數(shù)據(jù)庫(kù)的訪問(wèn)頻率梅誓,提高訪問(wèn)性能旱眯。

  • 保證緩存中的對(duì)象與數(shù)據(jù)庫(kù)同步,位于緩存中的對(duì)象稱為持久化對(duì)象证九。

8删豺、ConcurrentHashMap 的 key 可不可以為 null ?

  • HashMap 可以允許插入 null key 和 null value

  • HashTable 和 ConcurrentHashMap 都不可以插入 null key 和 null value

9愧怜、線程池的線程命名

一呀页、創(chuàng)建線程的時(shí)候沒(méi)有傳入名字

ThreadPoolManager.potatoPool.execute(new MyThread());  

在這種情況下,線程池會(huì)給線程自動(dòng)命名拥坛,如果想改變線程的名稱蓬蝶,那么需要在線程中的run方法中給線程setName。如下:

public class MyThread extends Thread{  
    public String threadName;  
    public MyThread (String threadName){  
        this.threadName=threadName;  
    }  
    
    @Override  
    public void run() {  
        Thread.currentThread().setName(threadName);  
    }  
  
}  

二猜惋、創(chuàng)建線程的時(shí)候直接傳入名字

ThreadPoolManager.potatoPool.execute(new MyThread("aa"));  

10丸氛、Linux上安裝好MySQL,只能本機(jī)訪問(wèn)著摔,其他機(jī)器不能訪問(wèn)的問(wèn)題

1缓窜、權(quán)限問(wèn)題,修改權(quán)限

2谍咆、防火墻的原因禾锤,修改防火墻配置

11、線程池核心線程數(shù)(core) 和 最大線程數(shù)(max)

當(dāng)所有的核心線程(core) 都在干活時(shí)摹察,新添加的任務(wù)會(huì)被添加到隊(duì)列中等待處理恩掷,如果隊(duì)列滿了,則新建非核心線程執(zhí)行任務(wù)供嚎。

12黄娘、線程池捕獲異常

public class CaptureUncaughtException {  
    public static void main(String[] args) {  
        Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());  
        ExecutorService exec = Executors.newCachedThreadPool();  
        exec.execute(new ExceptionThread2());  // ExceptionThread2 為任務(wù)對(duì)象
    }  
}  

/**  
 * MyUncaughtExceptionHandler:捕獲線程異常處理的類,需要實(shí)現(xiàn) UncaughtExceptionHandler 接口
 * @author nnngu  
 */  
class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {  
    @Override  
    public void uncaughtException(Thread t, Throwable e) {  
        System.out.println(t+"捕獲到了異常克滴,異常處理的對(duì)象為:"+e); // e:拋出的對(duì)象 
    }  
}  

13逼争、Mybatis 的 Mapper

參考:

為什么mybatis的mapper沒(méi)有實(shí)現(xiàn)類(原理探究)

Mybatis中Mapper映射文件詳解

14、Jsp和servlet 偿曙,jsp的 9大內(nèi)置對(duì)象

Servlet 的生命周期:init氮凝、service(doGet羔巢、doPost)望忆、destory

JSP 的九大內(nèi)置對(duì)象:

內(nèi)置對(duì)象名 類型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter
pageContext PageContext

JSP 的四大域?qū)ο螅?/h3>
對(duì)象
ServletContext context域
HttpServletRequet request域
HttpSession session域
PageContext page域

15罩阵、文件上傳、socket启摄、流

參考:

java文件上傳和下載

16稿壁、Netty

參考:

Netty——基本使用介紹

17、集合

答:List歉备、Set傅是、Map

List 是有序的,可以有重復(fù)元素

Set 是無(wú)序的蕾羊,不允許有重復(fù)元素

Map 是鍵值對(duì)

18喧笔、IO 和 NIO

參考:

Java NIO 系列教程

19、寫在最后

最后龟再,我發(fā)現(xiàn)面試官也有一些錯(cuò)誤书闸,在此也把它記錄下來(lái):

  • 面試官說(shuō) NIO 是 JDK 1.5 之后引入的。(其實(shí) NIO 是 JDK 1.4 開(kāi)始引入的)
  • 關(guān)于線程池的核心線程數(shù)(core) 和 最大線程數(shù)(max)的問(wèn)題利凑,面試官說(shuō)當(dāng)線程池里的線程數(shù)達(dá)到核心線程數(shù)(core) 時(shí)浆劲,新來(lái)了任務(wù)就會(huì)繼續(xù)創(chuàng)建線程來(lái)處理。(其實(shí)當(dāng)線程數(shù)達(dá)到核心線程數(shù)之后哀澈,新來(lái)的任務(wù)會(huì)加入隊(duì)列等待處理牌借,只有當(dāng)隊(duì)列滿了才會(huì)繼續(xù)創(chuàng)建線程)

先寫到這里,以后有什么補(bǔ)充再更新割按。

本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/_posts/2018-03-30-%E6%9F%90%E5%85%AC%E5%8F%B8(%E7%AE%80%E7%A7%B0SMKJ)%E9%9D%A2%E8%AF%95%E8%AE%B0%E5%BD%95.md

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膨报,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子适荣,更是在濱河造成了極大的恐慌丙躏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件束凑,死亡現(xiàn)場(chǎng)離奇詭異晒旅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)汪诉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門废恋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扒寄,你說(shuō)我怎么就攤上這事鱼鼓。” “怎么了该编?”我有些...
    開(kāi)封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵迄本,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我课竣,道長(zhǎng)嘉赎,這世上最難降的妖魔是什么置媳? 我笑而不...
    開(kāi)封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮公条,結(jié)果婚禮上拇囊,老公的妹妹穿的比我還像新娘。我一直安慰自己靶橱,他們只是感情好寥袭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著关霸,像睡著了一般传黄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上队寇,一...
    開(kāi)封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天尝江,我揣著相機(jī)與錄音,去河邊找鬼英上。 笑死炭序,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苍日。 我是一名探鬼主播惭聂,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼相恃!你這毒婦竟也來(lái)了辜纲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拦耐,失蹤者是張志新(化名)和其女友劉穎耕腾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杀糯,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扫俺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了固翰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼纬。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骂际,靈堂內(nèi)的尸體忽然破棺而出疗琉,到底是詐尸還是另有隱情,我是刑警寧澤歉铝,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布盈简,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏柠贤。R本人自食惡果不足惜香浩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望种吸。 院中可真熱鬧弃衍,春花似錦呀非、人聲如沸坚俗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猖败。三九已至,卻和暖如春降允,著一層夾襖步出監(jiān)牢的瞬間恩闻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工剧董, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幢尚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓翅楼,卻偏偏與公主長(zhǎng)得像尉剩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毅臊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • categories: Interviewdescription: 本文收集了一些經(jīng)典的Java面試題 1理茎、面向?qū)?..
    我是阿喵醬閱讀 87,841評(píng)論 0 86
  • 今天上午有幸參加了廈門路小學(xué)積分制管理啟動(dòng)大會(huì),會(huì)議中初老師精彩分享了《積分制管理理念與實(shí)操》 積分制的精髓和本質(zhì)...
    尚源希媽媽閱讀 190評(píng)論 0 0
  • 小時(shí)候管嬉,發(fā)現(xiàn)自己有種預(yù)知未發(fā)生事件的天賦皂林。某天,對(duì)易經(jīng)感興趣蚯撩,翻閱之下础倍,匆匆合上,發(fā)誓年過(guò)60后才會(huì)再研究胎挎。 某次...
    吳若源1閱讀 152評(píng)論 0 0
  • 今天師傅給6個(gè)師兄師姐升了段著隆。我還要努力,Oss! 今日內(nèi)容呀癣,完善理論學(xué)習(xí)美浦,完善關(guān)鍵動(dòng)作。 1.Trangle(三...
    姚問(wèn)道閱讀 646評(píng)論 0 0
  • Our story began in January 15th.為了找一個(gè)適合寫我和你之間的故事的軟件我找了好久流酬,...
    jccccc閱讀 218評(píng)論 0 0