招聘感想(含面试题)(0)

G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
两个月前,开始招聘Delphi程序员,招聘前随手写了几道题,用来笔试。 到现在还没有招到人,很无奈,标准甚至降到只要能做第1、3、5题就录用的水平。结果竟然没有人能够将这3题都答对。很多人连string和WideString的区别都不知道。 近几年,Delphi的从业环境逐年下降,在网路上看到无数人在唱衰歌、转语言。想来原因有: 1、行业开发方向往网络、嵌入式、分布式发展;而Delphi被大家当成做数据库开发的工具(甚至之前宝兰都这么宣传)。 2、用Delphi的公司大都是做MIS的中小公司,产品附加值差,一味压低产品门槛和开发人员素质。 3、开发人员大多只会拖拖控件,碰到点小问题就到处找控件,看看大富翁、CSDN Delphi的问题,一个个白痴得不行。 4、关于Delphi的教材也是全篇一律的数据库开发,不亦乐乎地玩弄些数据读写的小技巧。 我想说的开发人员的问题。过来面试的人,从77年到88年的都有,年龄跨度上较有代表意义。多数人的简历上都写着精通这个、熟悉那个,却只能做上3、4题,还未能全对,有写上名字交来白卷的,更有2个80年前后的应聘人,看了会题目后直接走了。我觉得题目还是比较容易的,而是很多人的开发能力差,从来没有想过理解开发环境、操作系统提供的能力,提高算法设计能力。因此,给人的印象用Delphi的都是些水平低下的人,公司没法提高开发质量、产品质量,也就无法开出有竞争力的薪资,最后是整个Delphi生态链的质量下降。 说这些话,一来期望得到些共鸣;二是希望借此招聘,我对英才网上泛滥的简历几近绝望了。 我姓李,联系方式是:jzs_li@163.com,北京金钻石科技发展有限公司。在盒子中得到下面这么一个回应,原始观点就不修改了,我将回复补充上来,重新阐述一下我的意思:to 楼主 我这人也不会对人进行人身攻击,反而我是鄙视那些对人身进行攻击的人.只是我不希望对那些新手进行歧视.因为我们这里的每个高手都是从新手走过来的. 我也是delphi 的深爱着.说说发自内心的感想固然是好.我只是看到你的第三点,也许就像20楼说的.激动了点. 但是我再次声明,我绝不会对人身进行攻击的.to no74 呵呵,我的第三点是写的有点让人受不了了,我表达得不好。我其实想说的意思是delphi论坛或delphi版的很多问题,其实自己去看看自带的帮助就可以了,举例来说(大家都说数据库,我也用数据库做列子),用ADO,那么Delphi自带帮助,用MS SQL SERVER,那么看看自带的联机帮助;一看就明白了,而且全面、透彻;而不是在坛子问问某某属性有没有、某某SQL怎么写什么;这种做法终究害了delphi的圈子里的人。 可以去看看C、C++里的帖子,从话题的层面而言,他们做得比我们好。 笔试题目如下:Delphi工程师笔试题北京金钻石科技发展有限公司答题人:_______________一、 Delphi基础1、Delphi 内置类型 string 和 WideString 的区别。2、简要描述Delphi代码单元中,以下关键字的作用。 interface: implementation: initialization: finalization:3、将一周七天声明成枚举类型。4、现有Integer 变量 A、B,在不声明其它变量的情况下,将它们的值交换。 如,A := 1;
B := 2;
交换之后 A = 2;
B = 1。5、现有以下类:type TBase = class function GetValue: Integer;
virtual;
end;
TChild1 = class(TBase) function GetValue: Integer;
override;
end;
TChild2 = class(TBase) function GetValue: Integer;
override;
end;
function TBase.GetValue: Integer;
begin
Result := 1;
end;
function TChild2.GetValue: Integer;
begin
Result := 2;
Result := inherited GetValue;
end;
function TChild1.GetValue: Integer;
begin
Result := inherited GetValue;
Result := 3;
end;
用以下方法创建对象o1, o2: TBase: o1 := TChild1.Create;
o2 := TChild2.Create;那么调用以下方法的返回值是 o1.GetValue返回: o2.GetValue返回:6、如何模块内部获得自身路径? Exe程序: DLL程序:7、描述一下TEidt和TListView的类派生顺序,并说明它们的来源区别。8、用pascal 写一个双向链表。9、设计模式中的单件模式,在Delphi中可以用什么方式创建。10、Delphi快捷键 快速搜索添加控件: 打开工程属性对话框: 切换编辑中的代码窗体: 删除一行代码:二、 Win32基础1、写出Delphi声明Win32类型的库及其对应的Win32 Dll库(至少3个)。2、如何在Delphi中完成多线程的内存保护。三、 数据库1、现有MS SQL Server 数据库 UserLibs 列举出所有用户表及其字段。2、现有数据库A,数据库B和A相对应,在数据A中表增加时,或字段增加时,将结构同步到数据库B中,该过程不能损害数据。(上机题)(应heheheheh 第二次补充三.2题的说明) 题目意思是 数据库A 同步结构到 数据库B 增加表 --在B中--> 增加相同的表 任意现有 表中增加字--在B中--> 相同的表中增加相同的字段(相同类型、默认值等) 段 两个库中数据是独立的,只是同步结构,就是说在A库中增加了表,或增加了字段,都要同步到B库中。
 

菜鸟黄

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵~说真的...一下子要我做这些题我真不能全部做出来.可能我的基础不太好.
 
F

fanboynet

Unregistered / Unconfirmed
GUEST, unregistred user!
1~5全部是基础,能做就能录取?要求也太低了点吧....6是API,7要熟悉控件也没问题,8也是基础,9设计模式不懂,这个倒真不会...10是IDE熟悉程度二.1这个做过的应该都能说出些,二.2高级一点,也没问题三.这个不会了,sql2000不熟.说说,能做出这份题的工资标准?
 
C

ChinaYA

Unregistered / Unconfirmed
GUEST, unregistred user!
老大你太强了,这样的问题只能是2002前毕业的人可以给出圆满答案,还需要有特殊经历的才行。我的圈子里不会超过3个人:一个去专业搞数据库了——非Delphi开发。一个现在搞WG(转向汇编和C了)剩下一个,不怎么做开发,靠以前的经验到处混呢。请试想,2002年前毕业的,今天都30多了,如果现在还出来打工,基本比较失败——我就算其中之一。如果去北京,我一定去找你混![:D]关于试题:应该有windows消息机制、和线程基本概念(这是我接触的80后开发者最难搞清楚的)。学习Delphi,首先要搞清楚,VCL,Windows系统运行基础。没有读过 TThread 和 Timer 源码,不知道processmessage halt 这些的都很难通过你的考试[:)]。有几个我都不能,在纸上准确答出。
 
C

ChinaYA

Unregistered / Unconfirmed
GUEST, unregistred user!
你的帖子不怎么收欢迎哦,没有几个回的,如果是在2002、2003年,这样帖子一发,绝对爆![:D][:D][:D][:D][:D][:D][:D][:D][:D][:D][:D][:D][:D][:D] 准备下班回家了。希望你早日找到高手!
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
to fanboynet:一、1~5全部是基础,能做就能录取?要求也太低了点吧,我也没有办法,一开始不是这个标准的,后来面试的情况让我不得不降低标准,题目是我开始通知了面试前一天花了十几分钟随便出的,当时没有想到会面成这种情况。二、从题的范畴来说,考了Delphi语言基础(1-5),Delphi库中提供的支持(6),VCL体系的了解(7),数据结构(8),设计模式(9),IDE环境的熟悉程度(10),理解Delphi和Windows的关系(Win32基础)和数据库部分。 对于题的解答,题4起码有3种方法,题9有2种方法实现,数据库1题也就是1行SQL。三、这份题的工资标准的工资标准是3k~8k。
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
to ChinaYA, 发这个贴也没有期望多少,也就是发发感想,以前我从不在网上和人讨论的,无所谓啦
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
如果有人在北京找Delphi工作,又能答出其中几题,不妨联系我,13426192741。
 
A

autumn

Unregistered / Unconfirmed
GUEST, unregistred user!
在广州就好了~~
 

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
1. string为Ansi字符集,有引用计数机制。WideString为Unicode,无引用计数。2. interface:定义接口那个知道。unit unit_name下面的,实在不知道它有什么用 implementation:声明节和实现节的分界点。implementation上面的部分对其它引用本单元的模块是可见的。 initialization:单元初始化代码 finalization: 单元清理代码3: type TDay = (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);4: A := A + B;
B := A - B;
A := A - B;
还是声明个中间变量比较方便。5: o1.GetValue返回 3 o2.GetValue返回 26 如何模块内部获得自身路径? Exe程序: ParamStr(0). var: FilePath: array [0..MAX_PATH] of Char;
begin
GetModuleFileName(0,FilePath,MAX_PATH);
DLL程序: var: FilePath: array [0..MAX_PATH] of Char;
begin
GetModuleFileName(Hinstance,FilePath,MAX_PATH);
 

嬉皮笑脸

Unregistered / Unconfirmed
GUEST, unregistred user!
楼主说话有些偏见。首先, 每个人开发的侧重点不一样,他不可能什么都面面具到,就算你认为最基本了,如果别人没往那个方向发展,也不可能做出来。其次, 我敢说很多高手也不见得都能做出来,因为人的记忆不像计算机硬盘,人会忘记的,也许他做过1,2次类似的,可时间长了也没专门像高考那样去死记硬背。再次, 你也得考虑你所出试题是否让人难理解你的意图或者有歧异,大多数面试的人不会去问你题目的合理性。最后, 关于快捷键的问题,有的人也许就不喜欢用,他有他的操作方式,你非要别人记这些东西,也未免太苛刻了,虽然很简单很常规,但个人习惯不一样。也许你会说影响工作效率,我不觉得会影响,我也不相信你就省下这几秒钟时间能完成多大的任务。我觉得招人,不要过分谴责应聘者,这个是和每个人的所在环境不同造成的。如果他能通过他的方式在你规定的时间内正常的完成工作,那就是你出题考人的最终目的,而不是为了题目而招人。
 
G

GodIsWrong

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,我需要money,自己觉得虽然只搞了一年delphi,不过做你那题好歹也能勉强做几道啊,
 

柳随风

Unregistered / Unconfirmed
GUEST, unregistred user!
5: o1.GetValue返回 3 o2.GetValue返回 2更正一下:5: o1.GetValue返回 3 o2.GetValue返回 1
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
to嬉皮笑脸 首先我不抱怨面试的人。我是觉得这种整体低水平,对谁都是一场灾难。 其次我还是觉得题目不难,这和是不是高手没有关系。 再次对于快捷键,我觉得对开发而言,习惯用鼠标,效率肯定是高不了的,这不是几秒钟的问题。
 
L

larpear

Unregistered / Unconfirmed
GUEST, unregistred user!
都是很基础的东西!。。。理解楼主!
 
Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
  咱也来说两句。  首先,我也赞成LZ所说的,最好大家能对DELPHI了解相当透彻,最好能连DELPHI那些源代码都掌握,还能掌握相当标准的编码规范,有良好的软件开发思想。  但是,基础的东西是重要,但如果从事的开发不涉及到,即使开始掌握,过不了几个月也会记不太清楚了。我个人感觉,要对这些内容有一定了解,如果需要时,能够快速学会,并在使用过程中能正确使用。其实,我感觉,一个软件开发人员,主要的是开发能力,但更重要的是,能在尽短的时间内学会新东西。  再说一下关于快捷键的问题,其实这个不应该算是问题,用鼠标也没什么,如果按LZ的说法,那大家没事时,要多练一下打字,至少打字快了,写程序也快一点。写程序是要快,但主要还是系统的设计,设计好了,可以节约大量的代码量。就象我们公司写的软件,通常写法,一个基本的界面,要写几百行代码,按我们自己新设计并试验的方法,用继承+数据库中设计显示内容及查询,一个基本界面,用不到一百行就可以了,我们最终的想法是达到0代码。  再说一下在论坛上经常说的关于数据库的问题,大家可以调查一下,在全国各个公司中,用的软件,多数都是和数据库有关的,只要是企业的管理软件,没有不用数据库的。因此,软件公司开发的软件,多数也和数据库相关,这样,一个新手,学会开发数据库软件,找到工作的机会也会大很多。相当来说,数据库的开发也简单一点。  最后说一下控件的问题,低层次点说,会用DELPHI自带的控件,是让人感觉差一点,但如果要开发的软件,用自带的控件就可以实现,为什么不用??!!高层次点说,比较大的软件,常常会有自己写的控件,所以拖拖控件也不算什么,如果一个系统,只是用几十控件+一堆FORM拖拖就写成了,这也算很牛了。  再补充一句:个人感觉,在国内,无论是用什么开发软件的,大多数都是水平不高的人(高人也很多)。
 
Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
再简单答一下那几道基础题:1、Delphi 内置类型 string 和 WideString 的区别。  应该了解,但不了解也没什么吧,在什么情况下会用吗?不多吧。2、简要描述Delphi代码单元中,以下关键字的作用。 interface: implementation: initialization: finalization:  也应该了解,一般也不用,用时再查书,用一两次就知道了。3、将一周七天声明成枚举类型。  这一道题,问大家一下,大家常用枚举类型吗?噢,大家基本不用,那算了,我也不用了,如果用了,大家都不知道什么意思,再理解错了,就麻烦了。4、现有Integer 变量 A、B,在不声明其它变量的情况下,将它们的值交换。 如,A := 1;
B := 2;
交换之后 A = 2;
B = 1。  这一道题好象是当前用汇编时考试的题目,当时存储器(好象这么叫的吧)不够,这样做可以节省一个,现在没必要这样做了吧。5、现有以下类:type TBase = class function GetValue: Integer;
virtual;
end;
TChild1 = class(TBase) function GetValue: Integer;
override;
end;
TChild2 = class(TBase) function GetValue: Integer;
override;
end;
function TBase.GetValue: Integer;
begin
Result := 1;
end;
function TChild2.GetValue: Integer;
begin
Result := 2;
Result := inherited GetValue;
end;
function TChild1.GetValue: Integer;
begin
Result := inherited GetValue;
Result := 3;
end;
用以下方法创建对象o1, o2: TBase: o1 := TChild1.Create;
o2 := TChild2.Create;那么调用以下方法的返回值是 o1.GetValue返回: o2.GetValue返回:  类这个东西应该灵活掌握,但我总感觉用类比不用类速度会慢,写起来快,用起来不一定快。6、如何模块内部获得自身路径? Exe程序: DLL程序:  这个书上好象有,不行到网络上搜。7、描述一下TEidt和TListView的类派生顺序,并说明它们的来源区别。  这个有必要了解吗?不行就查帮助啊。8、用pascal 写一个双向链表。  这个要翻一翻数据结构书了。9、设计模式中的单件模式,在Delphi中可以用什么方式创建。  这个就惭愧了,还真没听过。10、Delphi快捷键 快速搜索添加控件: 打开工程属性对话框: 切换编辑中的代码窗体: 删除一行代码:  我的目标是:左手能用键盘打字,而且速度快,右手用鼠标。(东软那些给我们上SAP的顾问都是这样的)  顺便问一下大家打字的速度,我是英文300多,中文50多,在我们部门算是最快的了,别人写一段代码要一个小时,我半个多小时就打完了。
 
M

muhx

Unregistered / Unconfirmed
GUEST, unregistred user!
单件模式,在Delphi2006之前的确很难完美的实现,我说的完美是指依靠语言特性使用完全的OO来实现在Delphi2006之后由于Delphi提供了静态变量(class var)以及可以将Create设置为Protected,可以很容易的实现如果你真的要在Delphi 2006之前的版本实现单件模式,我的建议是,直接用个全局变量
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
to zbdzjx: 1、再说一下快捷键,你好像理解成打字速度了,题目里只是问了工程管理类的快捷键;其实还有很多的,如编辑器,代码切换等的,如果能熟练使用,效率的确是可以提高很多的;而且这些规则在不同语言、不同开发工具都是通用的。我觉得这是一种开发修养、专业精神的问题,对开发环境从IDE到库都足够了解,才能更有效开发;我看过很多人,明明类库里已经有的东西,因为不清楚,自己傻傻地搞了好几天,还有很多bug。 2、理解 string 和 WideString 还是蛮重要的,在涉及单字节储存和传输、字符编码等工作的时候,就会有所体会了。 3、枚举也是很重要,限制值范围,同时能让代码可读性大大增强。 4、第4题有好几个方法,直接用寄存器交换只是其一。 5、用不用类,并不能一概而论,这和功能(代码)的封装粒度有关。至于执行速度,从我观察过的代码来说,很多人对参数的写法带来效率下降,比类带来的开销要大得多。 6、了解VCL体系,明白它们的封装粒度,对充分利用这些类、派生扩展这些类是很有好处的。
 
G

gdli

Unregistered / Unconfirmed
GUEST, unregistred user!
to muhx 在Delphi2006之前,也是可以很完美实现单件的,可以说Delphi3之后就可以,呵呵。
 
顶部