java異常機制的原理與應用
答:每當程序出現異常之後,如果程序沒有進行相應的處理,則程序會出現中斷現象。
實際上,產生了異常之後,JVM會拋出一個異常類的實例化對象,如果此時使用了try語句捕獲的話,則可以進行異常的處理,否則,交給JVM進行處理。當try語句捕獲異常之後,將與catch語句的異常類型進行匹配,如果匹配成功則執行catch內的語句。簡單的應用:在所以throws語句的地方加入try-catch。標准應用:try-catch-finally-throw-throws一起使用。
2. 垃圾回收機制的優點
答:釋放無用的對象所佔用的空間。方式:自動回收,手動回收。使用System.gc(),實際上調用Runtime.getRuntime().gc()
3. Error與Exception區別
答:Error是jvm進行處理,是jvm出錯
exception是可以由程序處理的,可以用try-catch捕獲的
4. final,finally,finallize
答:final定義的變數的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承
finally是異常的統一出口,finallize是垃圾回收前的收尾工作,是Object類定義的
5. Anonymous Inner Class是否可以extends,是否可以implements Interface
答:允許繼承和實現,因為匿名內部類就是在抽象類和介面的基礎上發展起來的
6. Static Nested Class 與Inner Class的區別
答:使用Static定義的Class就是外部類,可以通過外部類. 內部類直接訪問
而Inner Class是不能被外部訪問的,只能通過外部類的實例再找到內部類實例。
7. HashMap and HashTable?
答:HashMap:1) released in jdk 1.2,new Class 2)採用非同步處理方式,性能較高,是非線程安全的 3)允許null
HashTable:1)released in jdk 1.0 ,old Class 2)採用同步處理方式,性能低,是線程安全的3)不允許null
8. assert代表什麼?
答:asserts是jdk 1.4之後發布的新關鍵字,表示斷言,即程序執行到某個地方肯定是預計的值,一般開發很少使用。要使用assert,必須加上 -ea參數
9. gc是什麼?
答:gc是garbage collection,垃圾回收,使用gc可以進行垃圾空間的釋放
10. String s = new String("xyz")產生了幾個對象?
答:一個匿名對象xyz,在棧空間內。一個new實例化的對象,在堆空間內。
11. sleep() and wait()?
答:sleep()是Thread類定義方法,表示線程的休眠,可以自動喚醒
wait()方法是Object類定義的方法,需要手動notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源
12. java中存在goto,但不能使用
13.數組有沒有length(),String有沒有length()?
答:數組有length屬性,String有length()
14. Overload與Override的區別
答:Overload:重載
|- 在一個類中定義的若干方法
|- 所有的方法名相同,但參數類型或個數不同
|- 只有參數有關,與返回類型無關
Override:覆寫
|- 在繼承的關系中
|- 子類定義了父類同名的方法,參數類型或個數最好完全一樣。
|- 訪問許可權不能更嚴格
15. Set里的元素不能重復,用什麼方法區分?==與equals()方法的區別
答:set里的元素是不能重復的,用iterator()方法來區分重復與否,==屬於地址比較,
==用於比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果為true
而在比較引用時,如果引用指向內存中的同一對象,結果為true
16. 列出常見的 runtime exception
答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException
17. abstract class 和 interface有什麼區別?
答:抽象類:
|-由抽象方法和常量、變數、全局常量、構造方法、普通方法組成
|-使用abstract聲明
|-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-存在單繼承的局限
|-抽象類可以實現若干個介面
介面:
|-由抽象方法和全局常量組成
|-使用interface關鍵字
|-子類要通過implements實現介面,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-一個子類可以實現多個介面
|-介面不能繼承一個抽象類,但允許繼承多個介面
18. 啟動一個線程要用start(),因為要通知jvm進行cpu資源的分配
19. try{}裡面有一個return,問finally{}裡面的代碼是否執行,在什麼時機執行?
答:finally{}裡面的代碼執行,在return之前。
20. 寫一個singleton
答:singleton的核心就是構造方法私有化,Class,Runtime都採用單例
package com.leongod.demo;
public class Singleton(){
private static final sin = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return sin;
}
}
21. 程序設計:輸入一組數字,然後排序輸出
答:package com.leongod.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class IO {
public static void main(String[] args) throws Exception {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("請輸入一組數字,中間用空格分割:");
String str = buf.readLine();
Set<Integer> set = new TreeSet<Integer>();
String[] arr = str.split(" ");
for(String s : arr) {
if (s.matches("\\d+")) {
set.add(Integer.parseInt(s));
}
}
Iterator<Integer> it = set.iterator();
System.out.println("排序後的結果:");
while (it.hasNext()) {
System.out.print(it.next() + ",");
}
}
}
22.列出目錄內的文件
package com.leongod.demo;
import java.io.File;
import com.sun.org.apache.xpath.internal.functions.FuncBoolean;
public class FileDemo {
public static void main(String[] args) {
?? File file = new File("D:" + File.separator + "kongkong");
?? fun(file);
}
public static void fun(File file) {
if (file.isDirectory()) {
File[] lf = file.listFiles();
if (lf != null) {
for(File f : lf) {
fun(f);
}
}
}else {
System.out.println(file.toString());
}
}
}
23. char可以存一個中文漢字嗎?
答:可以,使用了unicode編碼
24.多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
答:兩種多線程方法,繼承Thread類,實現Runnable介面
|-Thread類是Runnable介面的子類
|-使用Runnable介面可以實現資源共享的目的
|-所有線程操作都必須通過Thread類的start()方法啟動
兩種實現同步的方法:
|-同步代碼塊:Synchronized(this)
|-同步方法
25.f=3.4是不對的,3.4默認是double類型的
26.String and StringBuffer?
答:String 不可以修改,StringBuffer可以修改
27.Class.forname向容器中載入驅動程序
28.int與Integer有什麼區別?
答:int是基本數據類型,Integer是包裝類
在jdk1.5以後,可以實現自動裝箱和拆箱
29.2*8有效的方法是移位操作:2<<3
30.請說出類集框架的完整結構
答:類級框架的最大介面:Collection、Map、Iterator、Enumeration
Collection:存放單值
|-List:允許有重復內容
|-ArrayList:非同步處理,新的操作類,非線程安全
|-Vector:同步處理,舊的操作類,線程安全,支持Enumeration
|-Set:不允許有重復的內容,依靠hashCode()和equals()進行重復的驗證
|-HashSet:無序存放
|-TreeSet:有序存放,按Comparable排序
|-Map:存放一對值
|-HashMap:新的類,非同步處理,非線程安全,允許有null
|-HashTable:舊的類,同步處理,線程安全,不允許有null
|-TreeMap:有序排列,按key配需
|-Iterator:迭代輸出,依靠collection介面中的iterator方法輸出,是新的輸出標准
31.是否可以繼承String類?答:不可以,因為使用了final關鍵字
B. .NET程序員面試指南的目 錄
第1章 應聘開發職位的技巧和禁忌 1
1.1 技術職位需要怎樣的人才——了解大環境 1
1.1.1 對技術的執著和熱情 1
1.1.2 對編程始終抱有認真的態度 1
1.1.3 實事求是的態度和謙遜的品質 1
1.1.4 適合應聘公司的文化 1
1.2 一份出色的個人簡歷——面試准備 2
1.2.1 一份簡歷不宜超過一頁 2
1.2.2 永遠准備中文簡歷 2
1.2.3 不要在個人簡歷上註明希望薪水 2
1.2.4 簡歷模板 2
1.3 展現自我——開始發簡歷 3
1.3.1 應聘渠道 3
1.3.2 應聘流程 7
1.4 真正的面試——開始面試 8
1.4.1 筆試 8
1.4.2 面試 10
1.4.3 電話面試 11
1.4.4 網路考試 11
1.5 面試中的一些禁忌 11
1.6 小結 12
第2章 .NET框架基礎 13
2.1 .NET基礎概念 13
2.1.1 什麼是CTS、CLS和CLR 13
2.1.2 開發和運行.NET程序需要的最基本環境是什麼 15
2.1.3 .NET是否支持多編程語言開發 15
2.1.4 CLR技術和COM技術的比較 17
2.1.5 什麼是程序集和應用程序域 18
2.2 .NET運行機制 20
2.2.1 .NET程序被編譯成什麼形式的代碼 20
2.2.2 JIT是如何工作的 22
2.2.3 簡述程序集的載入機制 23
2.2.4 如何配置程序集的版本策略 25
2.3 生成、部署和管理 27
2.3.1 如何生成強簽名的程序集 27
2.3.2 如何把程序集放入GAC中 29
2.3.3 延遲簽名及其作用 30
2.3.4 程序集的版本分哪幾部分 32
2.4 名企面試真題 32
2.5 小結 33
第3章 .NET類型語法基礎 34
3.1 基礎類型和語法 34
3.1.1 .NET中所有內建類型的基類是什麼 34
3.1.2 System.Object中包含哪些方法,哪些是虛方法 35
3.1.3 值類型和引用類型的區別 37
3.1.4 簡述裝箱和拆箱原理 40
3.1.5 C#中是否有全局變數 43
3.1.6 struct和class的區別,struct適用哪些場合 43
3.1.7 類型的初始化器何時被調用 44
3.1.8 C#中方法的參數可以有哪幾種傳遞方式 47
3.1.9 C#中string和String有什麼區別 50
3.1.10 .NET支持哪幾種可訪問性級別,C#實現了其中的哪幾種 50
3.1.11 簡述屬性的特點及屬性和方法的異同 51
3.1.11 簡述C#中的淺復制和深復制 54
3.1.12 簡述C#中的循環語法和各自的特點 57
3.1.12 C#中的using語句有什麼作用 60
3.2 內存管理和垃圾回收 62
3.2.1 簡述.NET中堆棧和堆的特點和差異 62
3.2.2 執行string abc=」aaa」+」bbb」+」ccc」共分配了多少內存 64
3.2.3 .NET中GC的運行機制 66
3.2.4 Dispose方法和Finalize方法在何時被調用 67
3.2.5 GC中代(Generation)是什麼,一共分幾代 70
3.2.6 GC機制中如何判斷一個對象是否仍在被使用 71
3.2.7 .NET的託管堆中是否可能出現內存泄漏現象 72
3.3 面向對象的實現 75
3.3.1 C#中類可以有多個父類、可以實現多個介面嗎 75
3.3.2 簡述C#中重寫、重載和隱藏的概念 76
3.3.3 為什麼在構造方法中調用虛方法會導致問題 78
3.3.4 在C#中如何聲明一個類不能被繼承 82
3.4 異常的處理 82
3.4.1 如何針對不同的異常進行捕捉 82
3.3.2 如何使用Conditional特性 84
3.3.3 如何避免類型轉換時的異常 86
3.5 名企面試真題 88
3.6 小結 89
第4章 字元串、集合和流的使用 90
4.1 字元串處理 90
4.1.1 System.String是值類型還是引用類型 90
4.1.2 StringBuilder類型有何作用 91
4.1.3 如何在String和Byte[]對象之間進行轉換 92
4.1.4 簡述BASE64編碼的作用以及C#中對其的支持 94
4.1.5 SecureString的實例如何被分配和釋放 96
4.1.6 什麼是字元串池機制 98
4.2 常用集合和泛型 99
4.2.1 Int[]是引用類型還是值類型 99
4.2.2 數組之間的如何進行轉換 100
4.2.3 解釋泛型的基本原理 102
4.2.4 什麼是泛型的主要約束和次要約束 104
4.2.5 .NET中是否可用標准模板庫(STL) 105
4.3 流和序列化 106
4.3.1 什麼是流,.NET中有哪些常見的流 106
4.3.2 如何使用使用壓縮流 109
4.3.3 Serializable特性有何作用 111
4.3.4 .NET提供了哪幾種可進行序列化操作的類型 113
4.3.5 如何自定義序列化和反序列化的過程 116
4.4 名企面試真題 119
4.5 小結 119
第5章 常用類和介面 120
5.1 類型的基類System.Object 120
5.1.1 是否存在不繼承自System.Object類型的類 120
5.1.2 在System.Object中定義的三個比較方法有何異同 122
5.1.3 如何重寫GetHashCode方法 125
5.2 時間的操作System.DateTime 127
5.2.1 DateTime如何存儲時間 127
5.2.2 如何在DateTime對象和字元串對象之間進行轉換 127
5.2.3 什麼是UTC時間,如何轉換到UTC時間 130
5.3 IFormattable和IFormatProvider的使用 131
5.3.1 如何使用IFormattable介面實現格式化輸出 131
5.3.2 如何告訴類型格式化輸出的方式 133
5.4 管理文件和文件夾的類型 135
5.4.1 如何操作文件和文件夾 135
5.4.2 如何實現文件和文件夾的監控功能 139
5.5 .NET中的定時器 141
5.5.1 .NET提供了哪幾個定時器類型 141
5.5.2 .NET的內建定時器類型是否會發生回調方法重入 146
5.6 名企面試真題 151
5.7 小結 151
第6章 .NET中的高級特性 152
6.1 委託 152
6.1.1 請解釋委託的基本原理 152
6.1.2 委託回調靜態方法和實例方法有何區別 154
6.1.3 什麼是鏈式委託 154
6.1.4 鏈式委託的執行順序是怎麼樣的 156
6.1.5 可否定義擁有返回值的方法的委託鏈 157
6.1.6 委託通常可以應用在哪些場合 159
6.2 事件 164
6.2.1 請解釋事件的基本使用方法 165
6.2.2 事件和委託有何聯系 167
6.2.3 如何設計一個帶有很多事件的類型 169
6.2.4 用代碼表示如下情景:貓叫、老鼠逃跑、主人驚醒 172
6.3 反射 175
6.3.1 請解釋反射的基本原理和其實現的基石 176
6.3.2 .NET提供了哪些類型來實現反射 179
6.3.3 如何實現動態地發射程序集 184
6.3.4 如何利用反射來實現工廠模式 188
6.3.5 如何以較小的內存代價保存Type、Field和Method信息 194
6.4 特性 196
6.4.1 什麼是特性,如何自定義一個特性 196
6.4.2 .NET中特性可以在哪些元素上使用 198
6.4.3 有哪幾種方法可以獲知一個元素是否申明某個特性 200
6.4.4 一個元素是否可以重復申明同一個特性 202
6.5 名企面試真題 204
6.6 小結 204
第7章 .NET多線程編程 205
7.1 多線程編程的基本概念 205
7.1.1 請解釋操作系統層面上的線程和進程 205
7.1.2 多線程程序在操作系統里是並行執行的嗎 206
7.1.3 什麼是纖程 207
7.2 .NET中的多線程編程 208
7.2.1 如何在.NET程序中手動控制多個線程 208
7.2.2 如何使用.NET的線程池 212
7.2.3 如何查看和設置線程池的上下限 215
7.2.4 如何定義線程獨享的全局數據 217
7.2.5 如何使用非同步模式讀取一個文件 221
7.2.6 如何阻止線程執行上下文的傳遞 223
7.3 多線程程序的線程同步 227
7.3.1 什麼是同步塊和同步塊索引 227
7.3.2 C#中的lock關鍵字有何作用 229
7.3.3 可否使用值類型對象來實現線程同步 232
7.3.4 可否對引用類型對象自身進行同步 233
7.3.5 什麼是互斥體,Mutex類型和Monitor類型的功能有何區別 235
7.4 名企面試真題 238
7.5 小結 238
第8章 ASP.NET應用開發 239
8.1 ASP.NET應用開發基礎 239
8.1.1 請解釋ASP.NET以什麼形式運行 239
8.1.2 常見的HTTP Code有哪些 242
8.1.3 GET請求和POST請求有何區別 245
8.1.4 介紹ASP.NET的頁面生存周期 247
8.2 控制項和頁面 249
8.2.1 什麼是靜態頁面,什麼是動態頁面 249
8.2.2 請簡述ViewState的功能和實現機制 251
8.2.3 Session有哪幾種存儲方式,之間有何區別,如何進行設置 255
8.2.4 如何嵌套使用GridView控制項 259
8.2.5 列舉幾種實現頁面跳轉的方法,並說明其實現機制 263
8.2.6 請解釋<%# Eval(source)%>的功能和實現機制 270
8.2.7 ObjectDataSource控制項有何作用 273
8.3 驗證和安全 277
8.3.1 如何使用正則表達式來驗證一個上海市電話號碼 277
8.3.2 介紹ASP.NET驗證控制項的功能和使用方法 280
8.3.4 如何防止SQL注入式攻擊 287
8.4 名企面試真題 289
8.5 小結 289
第9章 .NET中的資料庫開發 290
9.1 ADO.NET和資料庫程序基礎 290
9.1.1 什麼是關系型資料庫 290
9.1.2 如何通過SQL語句來實現行列轉換 291
9.1.3 ADO.NET支持哪幾種數據源 293
9.2 ADO.NET和資料庫的連接 295
9.2.1 請簡要敘述資料庫連接池的機制 295
9.2.2 如何提高連接池內連接的重用率 298
9.2.3 一個連接字元串可以包含哪些屬性 300
9.2.4 CommandBehavior.CloseConnection有何作用 302
9.3 使用ADO.NET讀寫資料庫 305
9.3.1 ADO.NET支持哪兩種方式來訪問關系資料庫 305
9.3.3 什麼是強類型的DataSet 309
9.3.4 請解釋SqlDataAdapter的基本工作機制 312
9.3.5 如何自動生成SqlDataAdapter的更新命令 316
9.3.6 如何實現批量更新的功能 319
9.4 名企面試真題 321
9.5 小結 321
第10章 XML的應用和處理 322
10.1 XML的基本特性 322
10.1.1 什麼是XML 322
10.1.2 簡述XML的常用領域及其優勢 323
10.1.3 XML中<![CDATA[ ]]>標簽的作用 324
10.1.4 XML規范是否允許空的屬性值 325
10.1.5 XML中如何處理諸如「<」的字元 326
10.1.6 XML中的命名空間如何使用 328
10.2 使用.NET組件讀寫XML 330
10.2.1 .NET中操作XML的基本類型有哪些 330
10.2.2 如何使用XmlDocument類型操作XML文檔的節點和屬性 334
10.2.3 如何使用XPath來指向帶有屬性的節點 337
10.2.4 .NET中如何驗證一個XML文檔的格式 338
10.2.5 .NET中XML文檔和關系模式如何轉換 340
10.3 利用XSLT處理XML文檔 344
10.3.1 什麼是XSLT,XSLT有何作用 344
10.3.2 如何使用XSLT中的模板 346
10.3.3 如何在XSLT文檔中調用其他XSLT文檔 349
10.3.4 如何在代碼中使用XSLT文檔 351
10.4 名企面試真題 353
10.5 小結 353
第11章 Web Service的開發與應用 354
11.1 SOAP和Web Service的基礎概念 354
11.1.1 請簡述SOAP協議 354
11.1.2 什麼是WSDL,它有何作用 355
11.1.3 Web Service中如何處理附件 357
11.2 使用.NET開發Web Service 360
11.2.1 如何在.NET中創建Web Service 360
11.2.2 WebMethod特性包含哪些屬性,各有何用處 363
11.2.3 如何生成Web Service代理類型 367
11.2.4 請簡述.NET中Web Service的異常機制 368
11.3 Web Service的安全機制 371
11.3.1 請簡要介紹WS-Security的簽名機制 371
11.3.2 WS-Security規范申明了哪幾種身份驗證的方法 373
11.4 名企面試真題 375
11.5 小結 375
第12章 .NET Remoting分布式 應用開發 376
12.1 .NET Remoting框架基礎 376
12.1.1 請簡要介紹.NET Remoting的運行機制 376
12.1.2 請列舉.NET Remoting機制中有哪些組件可以擴展替換 379
12.1.3 請簡述.NET Remoting生存周期機制 384
12.2 使用.NET Remoting進行分布式應用開發 387
12.2.1 請介紹服務端激活模式和客戶端激活模式的區別 387
12.2.2 請簡述Remoting中有哪幾種遠程調用方式 390
12.2.3 Remoting機制中如何處理以ObjRef為參數的方法調用 393
12.2.4 請簡述Remoting中配置文件的使用 397
12.2.5 如何在客戶端和伺服器端共享遠程對象類型 400
12.3 名企面試真題 404
12.4 小結 404
第13章 代碼和演算法 405
13.1 基礎演算法題 405
13.1.1 請實現一個快速排序演算法 405
13.1.2 請實現一個二分查找演算法 406
13.1.3 請實現一棵二叉樹的中序、後序遍歷 408
13.1.4 請寫出一個奇偶分割演算法 413
13.1.5 請實現一個簡單的最短路徑演算法 414
13.2 程序設計題 423
13.2.1 請編程實現斐波拉契數列問題 423
13.2.2 請設計窗口程序演示八皇後問題 425
13.3 名企面試真題 432
13.4 小結 432
第14章 .NET中的單元測試 433
14.1 單元測試基礎概念 433
14.1.1 請簡述單元測試的作用和其優點 433
14.1.2 請舉例說明TDD開發方式的流程 434
14.1.3 請編寫實現階乘功能模塊的測試用例 437
14.2 使用NUNIT進行單元測試 439
14.2.1 如何使用NUNIT來進行單元測試 439
14.2.2 如何對NUNIT的測試用例進行分類 442
14.2.3 請解釋SetUp、TearDown、TestFixtureSetUp和TestFixtureTearDown 446
14.3 名企面試真題 448
14.4 小結 448
C. 程序員的成功面試技巧
程序員的成功面試技巧
程序員的成功面試技巧,程序員在近幾年來是很熱門的一個職位,因為在很多人眼裡程序員的收入是很高的,程序員想要工資高在面試的時候也是很講究技巧的,下面分享程序員的成功面試技巧?
1、給自己寫一份非常專業的簡歷
我的建議是,如果你想增加自己的入選機會,那最好還是花點錢製作一份專業的簡歷。相較於你將來可能得到的巨大收獲,這真的只是一個小小的投資。
2、研究面試官
當我聯系程序員來面試的時候,我總是會事先發電子郵件給他,並附上我的名字和博客地址。但是讓我驚訝的是,當我給他面試的時候,他竟然對我還是一無所知。
再舉個正面的例子,我在面試時也碰到過這類開發人員,甚至能對我以前寫的一篇博客或者做的教學視頻上面的內容侃侃而談。
你說我會推薦哪個?
面試官也是人,也會有人性的弱點和特點。Dale Carnegie曾說過,要讓別人對你感興趣,最簡單的方法就是你先表達出對對方的興趣。
不管這種方法是否有欠公正,但是如果你想面試成功,那麼我建議你事先最好先好好研究一下你應聘的這家公司和面試官(如果知道的話)。
當今社會的信息是如此的發達,我們完全可以在Facebook、Twitter、微博、博客上找到任何人的資料。即使你只是大致瀏覽一番,也會讓你受益良多。
3、獲得內部推薦
知道找工作最簡單的方法是什麼嗎?那就是獲得內部推薦。
這不但可以增加面試機會,還能提升40%的錄用幾率。
前陣子,我找到了一家心儀的公司。然後直接投簡歷?NONO,猜猜我是怎麼做的吧?
首先我找到一名和我有共同想法和意見的開發人員,然後開始關注他的博客。
接著我在他的博客中留言、發表建議,並且表現出對他的工作和公司非常感興趣的想法。最後我成功拿到了這個寶貴的內部推薦資格。
很多程序員會說,「可是,某某某公司裡面的人我一個也不認識啊」。如果你想就此放棄,那當我什麼也沒說,如果你願意試試,我敢打賭,你總能想出一種方法達到你的目的。
不過這有個秘訣,那就是首先你得在網上創建自己的「名片」——讓別人有了解你的機會,所以do it now吧。
4、 學會解決演算法問題
這是每一個開發人員都應該具備的重要技能,而且真要掌握起來也並非那麼難。
在很多面試中,都會有這樣的問題,要求你在白板或者電腦上解決編程問題,但是許多程序員,即使是那些非常優秀的程序員,都會一下子大腦一片空白,完全理不出思路來。
如果你能花時間學會如何解決這種類型的面試問題,那麼下次再碰到這種場景,就不會這么緊張了。
我們會緊張其實和怯場無關,主要是因為我們不熟悉這些問題,也沒有自信能解決這種問題。
在這方面建立起自信之後,你就再也不會緊張了。
5、活力洋溢地回答問題
只用一個字或者一句話,照本宣科平平無奇地回答問題,或許在技術上是正確的,但是你忘了應該藉此機會好好展示自己的激情——這才是一個開發人員能帶給團隊的最大正能量。
舉個例子說,如果我問你什麼是多態性,我不是要你按照課本中的定義重復給我聽,我希望你能就這個主題闡述一下,然後我們可以更深入地聊一聊。
6、小心「陷阱」問題
你為什麼換工作?
說說你最大的優點和缺點。
最近一次你是如何解決和同事之間發生的技術分歧的?
在回答問題之前,你最好明白面試官問這些問題的目的,掌握如何回答這類問題的技巧。
就先說說第一個問題吧「你為什麼換工作?」
在大多數情況下,面試官想知道的是你是否是一個愛說三道四、慣於誹謗抨擊僱主的人。所以千萬不要上當。
7、永遠不要撒謊
最糟糕的事就是在面試的時候撒謊。
知之為知之,不知為不知,如果你確實不知道,千萬不要自作聰明來編造問題的答案。
相反,你應該誠實地說,你不知道或者你並不是100%肯定,但是你願意嘗試一下,然後再講講自己的想法。講完之後也可以問面試官正確答案是什麼,以顯示你對此非常感興趣。
實話告訴你,大多數面試官問的問題都是他們知道的問題,不然如果你濫竽充數給你通過的話就會顯得他們像個傻瓜。所以千萬不要抱著僥幸心理,一旦發現你在撒謊,面試官馬上就會質疑你的人品。
8、不要太誠實
很多程序員會過多地透露自己的信息,不要以為誠實和完全透明就是最好的政策,殊不知過猶不及。
第7條所說的不可撒謊誠然不錯,但是我們也沒必要將自己所有生活的細節和所有缺點都告訴給面試官。
有個性是好的,但是如果暴露了性格缺陷就壞事了。
試想一下,要是你說自己喜歡賭博或者沉迷於魔獸世界,我敢打賭,面試官肯定會重新審視你。所以在說自己信息的時候一定要慎重,因為這不但會暴露你的缺陷,還會顯得你缺乏應有的.判斷力。
9、掌握計算機科學的基礎知識
是的,很多程序員在面試的時候,甚至理直氣壯地說,他們不知道鏈表和堆棧,因為他們沒有受到正規教育或者早就還給老師了。
我也承認我們在工作的時候是用不到那些深層次的計算機科學概念的,但是作為一個專業的軟體開發人員,你至少應該知道一些基本知識。
舉個例子說吧,你請電工來重新給你家的房子布線,但是這電工一點也不知道任何電氣工程的基本知識,你還請他干不?同理,我們也是如此。
10、關於經驗
這是最後一點,但並非最不重要的,很多開發人員,特別是剛進入這一行的新手,往往缺乏相關的經驗,也不知道如何增加所謂的工作經驗。
這有點像是雞和蛋哪個先出現的問題。
那麼又該如何增加經驗呢?
關鍵是要用創造性的方式。有很多方法都可以獲得工作經驗,但是卻不必真正去一家公司上班。
給你點提示:
參加開源項目
啟動開源項目
做一個移動app,放到App Store里
寫一個小型的Web應用程序
參與代碼交流和用戶組
這些方式都可以作為工作經驗寫到簡歷中去,只要自己有想法,不愁沒經驗。
希望這些技巧能對各位有所裨益。如有不同想法,也請不吝賜教。
程序員的中年危機是什麼
中年程序員危機
近日,中興網信員工歐某打開26樓辦公室窗戶縱身躍下,結束了42歲的生命。
目前有多種說法,有說因股份轉讓價過低和人事部產生分歧,有說疑因內部宮斗被離職,甚至還有消息說歐有精神方面的問題。
盡管具體原因仍待進一步的核實,但卻由此引發網上一波關於中年職場危機,特別是中年程序員危機的討論。
一般來說,一個行業的收縮導致人員數量與結構的調整,大致可以用一個簡單的模型來描述:行業規模縮減,行業人員減少,公司數量減少或規模縮減,進而導致管理層崗位變少,原本的管理層,被迫降至轉入下一級崗位。
這種降崗機制層層傳遞,高層降為中層,中層降為基礎管理崗,基礎管理崗降為一線員工。與此同時,由於行業規模的縮減,一線員工數量也在減少。
於是,一線員工失業,同時,停止招收該行業的新畢業生。在這個模型中,一般來說,即便行業收縮,中層也不用愁就業,仍可留在本行業中,最壞也不過是降崗。
中年人學習能力下降明顯
不過,在程序員行業中,有一些特別的因素,導致了其不同於一般行業的現象。
35-45歲的中年人,學習能力下降明顯。與此同時,這是一個新技術不斷涌現的時代。
一個人進入職場初期的技能、概念,過了20年後,已經完全不一樣了。程序員這個行業,更是把這個特點發揮到極致。
此外,精力明顯下降,不能熬夜,加之家務瑣事纏身,高強度工作即便有意願也很難付諸行動。
如果說其他行業的中層人員降級後仍可游刃有餘的話,這個行業的中層降崗後,會不如自己新崗位上的同事。
所以,程序員密集的IT、通訊行業,很多中層員工就處於一個很尷尬的地位。即便勉為其難地接受,也會面臨收入大幅度下降的心理適應問題。
如果考慮到資產配置中較高的按揭比例,當資金鏈斷掉,這就成為不可承受之重。