今天去一家外包公司面試,也是我之前的老東家。第一個面試官考我技術的一些問題,直接現場出題(沒有單獨的筆試)。
第一題是問我委托和事件。什么是委托,什么是事件,兩者之間的關系?
第二題是問我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();
}
}
}