臨近大學畢業,出來試試找工作,學c#出身,半路出家java,做過幾個ssh、stringMVC的項目。基礎知識不太扎實,勿噴
以下是我面試過程中遇到的問題
------------------------------------------------------------------------------------------------------------------------------
?1)下文摘自《Java?Concurrency?in?Practice》,請譯成中文。
“When used properly, threads can reduce development and maintenance costs and improve the performance of complex applications.
Threads make it easier to model how humans work and interact, by turning asynchronous workflows into mostly sequential ones.?
Threads are useful in GUI applications for improving the responsiveness of the user interface, and in server applications for improving
resource utilization and throughput.”
?
直接懵逼,后來回來上網一查《Java并發編程實踐》,豆瓣評分9.3
都說是一本極好的并發入門書籍,果斷淘了一本英文的,據說中文版翻譯極爛所以下了一個pdf加以對照。
還可以練一下英文水平
------------------------------------------------------------------------------------------------------------------------------
2)請指出下列程序片段的輸出結果
public class test {
public static void main(String[] args) throws Exception {
String str = "中國";
System.out.println(str.getBytes("UTF-8").length);
System.out.println(str.getBytes("GBK").length);
System.out.println(str.getBytes("ISO-8859-1").length);
System.out.println(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1"));
System.out.println(new String(str.getBytes("UTF-8"), "UTF-8"));
System.out.println(new String(str.getBytes("GBK"), "GBK"));
}
}
這也是java程序員經常碰到的亂碼問題,下面是輸出結果
-----------
6?
4
2
??
中國
中國
----------
ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字符。
gb2312是簡體中文的碼
gbk支持簡體中文及繁體中文 big5支持繁體中文
utf-8支持幾乎所有字符
------------------------------------------------------------------------------------------------------------------------------
3)請使用Java語言實現多線程模式下的生產者與消費者問題。
這里我就直接把網上的例子鏈接拿過來吧,因為沒他們寫的好23333
? ?? 1.這篇文章主要介紹了java多線程解決生產者消費者問題的方法,實例分析了
java采用多線程的方法解決生產者消費者問題的相關技巧,需要的朋友可以參考下
http://www.jb51.net/article/67018.htm
2.Java多線程-并發協作(生產者消費者模型)
http://www.cnblogs.com/linjiqin/p/3217050.html
3.http://blog.csdn.net/thinkpadshi/article/details/8163751
------------------------------------------------------------------------------------------------------------------------------
這道題也是copy某位前輩的,如果涉及到版權聯系我我會刪除,原帖鏈接(完整版)http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/
4)地球人都知道,Java有個東西叫垃圾收集器,它讓創建的對象不需要像c/cpp那樣delete、free掉,你能不能談談,GC是在什么時候 ,對什么東西,做了什么事情?
一.回答:什么時候?
1.系統空閑的時候。
? ?? 分析:這種回答大約占30%,遇到的話一般我就會準備轉向別的話題,譬如算法、譬如SSH看看能否發掘一些他擅長的其他方面。
2.系統自身決定,不可預測的時間/調用System.gc()的時候。
? ?? 分析:這種回答大約占55%,大部分應屆生都能回答到這個答案,起碼不能算錯誤是吧,后續應當細分一下到底是語言表述導致答案 太籠統,還是本身就只有這樣一個模糊的認識。
3.能說出新生代、老年代結構,能提出minor gc/full gc
??? 分析:到了這個層次,基本上能說對GC運作有概念上的了解,譬如看過《深入JVM虛擬機》之類的。這部分不足10%。
4.能說明minor gc/full gc的觸發條件、OOM的觸發條件,降低GC的調優的策略。
??? 分析:列舉一些我期望的回答:eden滿了minor gc,升到老年代的對象大于老年代剩余空間full gc,或者小于時被
HandlePromotionFailure參數強制full gc;gc與非gc時間耗時超過了GCTimeRatio的限制引發OOM,調優諸如通過NewRatio
控制新生代老年代比例,通過 MaxTenuringThreshold控制進入老年前生存次數等……能回答道這個階段就會給我帶來比較高的
期望了,當然面試的時候正常人都不會記得每個參數的拼寫,我自己寫這段話的時候也是翻過手冊的。回答道這部分的小于2%。
總結:程序員不能具體控制時間,系統在不可預測的時間調用System.gc()函數的時候;當然可以通過調優,用NewRatio控制n
ewObject和oldObject的比例,用MaxTenuringThreshold?控制進入oldObject的次數,使得oldObject 存儲空間延遲達到full
gc,從而使得計時器引發gc時間延遲OOM的時間延遲,以延長對象生存期。
------------------------------------------------------------------------------------------------------------------------------
5)StringBuffer與StringBuilder的區別
StringBuffer和StringBuilder類都表示內容可以被修改的字符串,StringBuilder是線程不安全的,運行效率高,如果一個字符串變量是在方法里面定義,
這種情況只可能有一個線程訪問它,不存在不安全的因素了,則用StringBuilder。如果要在類里面定義成員變量,并且這個類的實例對象會在多線程環境下使用,那么最好用StringBuffer。
------------------------------------------------------------------------------------------------------------------------------
6)(參考)String 和StringBuffer的區別
JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。String類表示內容不可改變的字符串。
而StringBuffer類表示內容可以被修改的字符串。當你知道字符數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字符數據。
另外,String實現了equals方法,new String(“abc”).equals(new String(“abc”)的結果為true,而StringBuffer沒有實現equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的結果為false。
------------------------------------------------------------------------------------------------------------------------------
大概就是這么多了明日繼續,如果涉及到版權問題聯系我,我會刪掉。
我只是博客的搬運工~~~~~