项目是关于实现一个语言转换器,将c/c++语言转化为类c语言,这是操作系统验证项目(实现对源码的正确性检测)的子项目。
两个人面试,其中技术面试题:
如何判断一个链表里是否有环,开始以为是判断是否是循环链表,其实是是否有环。
如何安全的访问指针(接连着上题我的回答问出来的,这是我自己招来的)
java里有多重继承吗,c++里有多重继承吗
多态,重载,覆盖,举例说明
类A,B都有方法method,C继承B和A,C中可以调用method吗,如何实现
字符串模式匹配算法,我说我没注意过,他举了个例子(A=aaabfddfbg,B=ab,在A中查找B)然后他就让我在会议室的黑板上实现,伪码后再实际实现,哎呀,这里一点小错误都会被用来打击你的信心
面向对象里,一个类的构造函数可以声明为私有吗,析构函数呢?这里我“流畅地”说道:“不能吧,作为一个类,要实例化为一个对象,必须是外部来调用,外部可以调用当然不能私有了。”他只是隐晦表示可以(回来后我想想才感觉他提过),我也不明白为什么他没明说,所以当时我以为应该是不能私有的(可能我那慷慨的陈词感染他了抑或他在心里已经将我刷了也无需多说什么了)。
问了几个编译原理的问题,直接崩溃了,长时间没看忘了(07年下半学期学的)
什么是BNF
LL文法,这个我还能说点
自上而下分析法,自下而上分析法各有哪些文法,我只能说说几个名字
LL(k),LR(k)中的k什么意思
写一个左递归的文法
如何消除一个左递归
写出一个二义文法
让你表示一个整数的文法
这里我墨迹半天,文法如何形式化表示忘了,文法G只知道是个4元组,例如整数的文法AB,A表示为1-9,B为任意位0-9,这些如何表示忘了
如何归纳消除
最后说说你理解的编译原理,其中问到词法分析程序功能,生成什么,这里说一下:你感觉你知道,但表达不出来或表达的差强人意,只能说明你还不行,要么不是真正理解要么说话时表达没有挑重点,说话水平有待提高,同时这也是理解不够深刻的体现。
还有些忘了,共面了两小时,受打击了,真得好好提高啊。不过听他说,他的目的就是打击我时我还是感到有些欣慰的,用他的原话说:“就算你说的是对的,我也会挑出不对的,我的目的就是打击你!”还好不是一无是处啊。