今天去一家外包公司面试,也是我之前的老东家。第一个面试官考我技术的一些问题,直接现场出题(没有单独的笔试)。
第一题是问我委托和事件。什么是委托,什么是事件,两者之间的关系?
第二题是问我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();
}
}
}