4月6号(周六)参加了微软的笔试,是20道选择题,不定项的,答错会扣分的。考完后也没想着能过,一周后4月12号(周五)晚上收到电话面试的通知,然后就是4月16日HR打电话来确认能否参加4月17日的电面,因为有事就推迟到了4月18号下午15:00-16:00,然后打开Lync,但是遗憾的是我听不到面试GG的声音,然后他就打电话过来了,就定了用电话直接沟通,然后在lync那个软件上写代码给他看。
直接就是第一题:给一个链表,让翻转。要自己定义节点结构什么的。思路有,就是磕磕绊绊的写不出来。第二题:m*n的矩阵,让求有多少个长方形,我说笔试考过了,然后面试GG说那就下一题(好吧,其实这题我也不会)。第三题:给n个左括号,n个右括号,让用栈求有多少种正确的匹配方式。但是因为面试GG但是表达不清楚,我以为他的意思是给一堆各种括号,然后求能匹配的。我就说把左括号压栈,然后右括号跟栈顶元素比较,匹配就出栈,最终如果栈为空则是正确的匹配方式。然后面试GG就说那就做这个吧。然后写代码给他看。第四题:给n个整数,让求前k个最大数。我说用堆排,他说怎么排,我说建立一个大顶堆啊。根顶点就是最大的。然后调整,再得到次大的。他说这好像有点费事吧。还有思路没?我说快排,他问快排时间复杂度和缺点有什么,我说o(nlgn),缺点是基本有序时性能不好。他说还有思路吗?我说提示一下呗。他说还是用堆,但是能不能不把n个数都建堆,后来他给我解释了这个问题,就是用k个数去建立一个小顶堆,此时堆顶就是最小的,看下一个数,如果他比这个数大,则把它插入这个堆中,再调整,最后得到的就是前k个数。
基本情况就是这样了,电面面的很烂,但是还是有点收获,一:思路很重要。二:平时要多编程,我发现自己居然定义一个链表的节点都定义的磕磕绊绊的,更别说对面的面试GG盯着我写了。三:要习惯在不同的平台下写代码,因为今天是在白板上写,而不是自己平时用的VC++6.0,发现自己写的代码真恶心。其实最最重要的真的是要多练练啊。只会说不会写,真心伤不起啊。