今天去一家外包公司面試,也是我之前的老東家。第一個面試官考我技術的一些問題,直接現場出題(沒有單獨的筆試)。
第一題是問我委托和事件。什么是委托,什么是事件,兩者之間的關系?
第二題是問我box和unboxing是可逆的嘛?
第三題是問我垃圾回收
第四題問題接口和抽象類,有什么共同點和區別?
第五題考我sql,從一個表中選出第五條和第十條記錄。
最后是一個算法題,比如給定一個字符串,返回字符串中相鄰的字符個數大於等於2的記錄數,比如aaa,算1個記錄,aaabb,算2個記錄,
abbccaaa,算3個記錄, aaabbbcccefffghhh,算5個記錄.
當時第一時間考慮的使用hash表來實現,發現不是最優解法。然后考慮用stack,面試官反問了我一句,需要用stack那么復雜嗎?最后只是簡單的說了下思路,
然后面試官就開始談項目相關的話題了。 最后面試通過,感覺面試官有意讓我過。記得以前PM說過一句,我們面試,不是問倒他們,而是知道他們會什么。感覺面試官有故意讓我過的嫌疑。
最后再加將實現的過程寫下來:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static int FindDuplicateChar(String stringToBeSearch) { int count = 0; char key = stringToBeSearch[0]; int index = 0; int length = stringToBeSearch.Length; int i = 0; while (i <= length - 1) { while ((i <= length - 1) && stringToBeSearch[i] == key) { i++; index++; } if (index >= 2) { count++; } if (i <= length - 1) { key = stringToBeSearch[i]; } index = 0; } return count; } static void Main(string[] args) { string ss = "aaabbbceeddfffggaaa55566615000225"; int i = FindDuplicateChar(ss); Console.WriteLine(i); Console.Read(); } } }