51Testing软件测试论坛

标题: 第一次面试经历,给新人看看 [打印本页]

作者: 铁风    时间: 2008-4-10 15:19
标题: 第一次面试经历,给新人看看
大四最后一学期了,没什么事做,就出来找工作。
     来深圳第二天,收到一封邮件,有家公司叫我去面试,我很奇怪,刚在网上注册简历一天还没投出去几份呢就有人看中我了?于是心里喜滋滋的。在网上搜索了一下这家公司的网站,规模还可以,有几百人,主要是做华为外包的。然后在网上找了一大堆笔试面试题,看了一下午。
    面试地点在南山科技园,到了那里,给了我一套题,然后带我到一个小会议室,让我一个小时做完。会计室里面已经有四个人在那做了,我很纳闷,我已经提前20分钟了,这些人怎么比我还早!!!题目很少,12个简答题,先扫了一眼,好象大部份都熟悉,第一个题写几句sql语句,很简单;第二题让我写数组和二叉树的区别,顿时大汗,二叉树那个东西还是大二学过,忘得差不多了,于是把数组写了一通,二叉树略过;第三题,在编码过程中怎样优化代码,题目记不怎么清楚了好象是这个意思,随意写了一通;第四题,对软件设计模式有什么理解,这个题题意我不知道要怎么理解了,就写了对面向对象设计模式的理解,因为在学校是学java的。第五题写一些常用的unix命令,我对此一无所知,略过。第六题,多态在C++中的表现形式,做到这感觉没多大希望了,于是直接在纸上写:对C++本人不熟悉,在java中,多态……;第七题,关于shell编程的,从没接触过,于是略过;第八题,二叉树的种类及特点,又是这个东西,我恨得直咬牙;第九题,关于虚函数的,好象从没听过,跳过。后面几题不记得了,反正是做得一塌胡涂,郁闷得要死,我简历上写得全是java,怎么笔试题没一个和java有关的。中间几次想直接走掉算了,后来一想,反正都来了,混点面试经验也好。
      试题交上去了,让我在会议室等一会,很快有一个大概是项目组长的来找我谈话了,可能他没什么经验,问了一些我简历上的东西,都很容易回答,还问我单元测试是白盒还是黑盒, 。问完后让我继续等,很快又一个大概是项目经理来了,感觉这个人很有经验,问得问题难回答一点,不过很和气,让我不要紧张,就当是聊天。期间有一个问题我因为有点紧张没听清楚,他重复了几次。他说技术他其实不是很看重,素质最重要。问我有什么优缺点,我说我学习能力强,他一直微微的笑,我说我缺点是有点内象,他马上说是不是沟通的主动性不够。最后和我说还有一轮人事面试,让我继续等,我很奇怪,难道这就过了两轮了?
    几分钟后,进来一带眼镜的中年女性,满脸严肃,我赶紧坐直了。首先问我对公司有什么了解,这个我有准备,感觉没说错什么。然后问我对加班有什么看法,我说我很乐意加班,没什么意见。她接着问如果公司要求经常加班但是没有加班费你会有什么想法,这下我不知道回答了,说一点意见都不没有是不是有点虚伪了,说有意见她会不会不高兴,最后我支支吾吾的说短时间加班没有加班费可以接受,时间太长我可能会有点意见;后面又问到优缺点这个问题,我按上次那样回答,说到我偏内向的时候,她马上问是不是不喜欢和人沟通,我赶紧说不是。然后就叫我回去等电话,我知道,最后那个问题出大问题了,肯定没戏了,果然,后面再没有任何消息了。
    回去后我思考了很久,总结这次面试可以说是极其失败,笔试一塌胡涂,面试更是…………
作者: shrinerain    时间: 2008-4-11 10:29
新人, 第一次没有经验, 理解.

不过, 还是有一些建议:

二叉树再怎么忘, 什么结构你总该记得吧?  一个节点, 左子树,右子树.
也许你不会写遍历代码, 不会写AVL旋转平衡代码. 但是连二叉树和数组的区别都不知道, 这个基础太差了.

另外, 你说自己熟悉java, java比C++更面向对象, 但是你竟然连"虚函数"这种面向对象最简单的基础都不知道.
如果我是面试官, 我会非常怀疑你简历的水分.

好的外企, 虚函数的实现机制, 它的数据结构是怎么样子, 都是经常问的问题.

我觉得你需要好好复习一下基础知识.
作者: 铁风    时间: 2008-4-11 17:29
原帖由 shrinerain 于 2008-4-11 10:29 发表
新人, 第一次没有经验, 理解.

不过, 还是有一些建议:

二叉树再怎么忘, 什么结构你总该记得吧?  一个节点, 左子树,右子树.
也许你不会写遍历代码, 不会写AVL旋转平衡代码. 但是连二叉树和数组的区别都不知道,  ...

批评的比较彻底,一针见血。
说实话,大一大二基本上都是玩过去的,基础确实很差,但二叉树是个什么东西还是有一点印象的,因为这个是考试重点,很花过一点时间去背,先序遍历,后序中序什么的,根结点子结点左儿子右儿子这些也还记得一点,因为这些名词都比较形象好记。二叉树的种类那个东西确实不记得了,当时就记得不牢,两年没看,忘光了。现在才知道那些基础课的重要,打算把以前的教材都找出来看看。
java是大三是学的,大四时实习时也用过。但是虚函数我想来想去都不记得在那看过,可能是比较高深的东西所以还没碰到吧!大学那本java教材我是看过好几遍的,里面的代码我甚至都手抄过很多次。那本600多页的教材提到函数的地方好象就只有构造函数,抽象函数,还有自定义函数。
虚函数这个东西真的很重要吗,到底是个什么东西?哪位高手详细说明一下,让我下次被问到时好歹也能扯一点东西出来,谢谢

[ 本帖最后由 铁风 于 2008-4-11 17:56 编辑 ]
作者: shrinerain    时间: 2008-4-11 23:09
标题: 回复 3# 的帖子
面向对象之继承, 你没用过吗?
作者: 铁风    时间: 2008-4-12 12:12
原帖由 shrinerain 于 2008-4-11 23:09 发表
面向对象之继承, 你没用过吗?

面向对象的三个特征:封装继承多态,学过java的人都知道的吧.
继承是实现代码重用的重要方法,当然用过.
不知道你想说什么,请直说.
作者: sooyoo    时间: 2008-4-12 16:45
哈哈,小伙子蛮有意思!
作者: shrinerain    时间: 2008-4-13 00:19
原帖由 铁风 于 2008-4-12 12:12 发表

面向对象的三个特征:封装继承多态,学过java的人都知道的吧.
继承是实现代码重用的重要方法,当然用过.
不知道你想说什么,请直说.


既然如此, 那我就直说:

虚函数是多态的底层实现机制, 在C++中我们用virtual关键字声明, 而Java不需要显式声明, 默认为虚函数.

我之所以问你有没有用过"继承", 因为你用过继承, 就应该知道子类override父类的方法, 也就是所谓"多态"的特点之一, 知道多态, 如果你再知道它的底层实现原理, 那就是"虚函数".

[ 本帖最后由 shrinerain 于 2008-4-13 00:31 编辑 ]
作者: shrinerain    时间: 2008-4-13 00:26
正如"函数重命名"是一般编译器对于"overload"的实现机制.

"虚函数"就是一般编译器对于"override"的实现机制.
作者: 铁风    时间: 2008-4-13 12:32
原帖由 shrinerain 于 2008-4-13 00:19 发表


既然如此, 那我就直说:

虚函数是多态的底层实现机制, 在C++中我们用virtual关键字声明, 而Java不需要显式声明, 默认为虚函数.

我之所以问你有没有用过"继承", 因为你用过继承, 就应该知道子类override父类 ...

overriding方法重写(或是方法覆盖)是父子类之间多态性的一种表现,两个方法的名称和参数相同。
overloading方法重载是一个类中的多态性的一种表现,方法同名不同参。
“虚函数是多态底层的实现机制”这句话还是不理解
作者: shrinerain    时间: 2008-4-13 20:47
原帖由 铁风 于 2008-4-13 12:32 发表

overriding方法重写(或是方法覆盖)是父子类之间多态性的一种表现,两个方法的名称和参数相同。
overloading方法重载是一个类中的多态性的一种表现,方法同名不同参。
“虚函数是多态底层的实现机制”这句话还是 ...


overload, 你写代码的时候, 你写的函数名是一样, 但是经过编译后, 他们的名字其实并不一样, 编译器会做一定修改, 区别不同的函数. 这样, 系统才能准确知道运行时调用哪个函数.

同样, override, 也是同样的函数名, 系统是怎么知道到底调用哪个函数? 当你引用子类的时候, 系统如何不调用父类的函数? 那是因为类会保存一个虚函数表, 这个链表中记录了override的函数信息. 所谓后绑定, 就是运行时查找虚函数表, 确定我们需要调用的是哪个函数.
作者: 铁风    时间: 2008-4-13 21:21
原帖由 shrinerain 于 2008-4-13 20:47 发表


overload, 你写代码的时候, 你写的函数名是一样, 但是经过编译后, 他们的名字其实并不一样, 编译器会做一定修改, 区别不同的函数. 这样, 系统才能准确知道运行时调用哪个函数.

同样, override, 也是同样的函数 ...

谢谢shrinerain的详细讲解,我差不多明白了
函数重写或是重载的时候,类会保存一个用来描述重写/重载函数的虚函数以便于系统调用时区别于原来那个函数
是不是这个意思?
以前只知道父类中的方法会被子类方法覆盖,却从没想过是怎么实现的
作者: shrinerain    时间: 2008-4-13 22:08
overload一般是改名,
override一般是保存虚函数表.

这些东西... 如果你光做做JSP, 可能根本用不到, 也不需要care.

但是,  知道这些东西的人比不知道的人, 至少, 他看的底层的书要多些.

所以一些公司喜欢考这些, 来判定应届生的基础扎实程度.
作者: xuelange    时间: 2008-4-14 17:53
标题: 回复 2# 的帖子
我还真的不知道树组和二叉数的区别呢,各位能说说么?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2