1、将一个字符串逆序
2、将一个链表逆序
3、计算一个字节里(byte)里面有多少bit被置1
4、搜索给定的字节(byte)
5、在一个字符串中找到可能的最长的子字符串
6、字符串转换为整数
7、整数转换为字符串
linux 嵌入式面试 杂集一
2008年10月08日 星期三 11:24 A.M.
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 #define mem1 *(volatile unsigned int*)(0x40020000) 把mem1定义为*(volatile unsigned int*)(0x40020000) 的同义语。 也就是以后访问mem1就相当于从32的无符号地址处0x40020000取数据。 而*(volatile unsigned int*)(0x40020000) 这个声明的意思是:把0x40020000这个十六进制转换成32位的无符号的指针, 之后解除这个指针的引用,也就是从0x40020000这个地址处读数据。 volatile unsigned int* 前面的关键字volatile表示这个地址处的值可能处在不断地变换之中,比如可能是os修改了该地址处的值,也可能是别的线程修改了该地址处的值。也就是说要求编译器不要对从该地址处读数据的代码进行优化。 在C/C++中使用这些代码的时候一般是写底层的程序!
{ MOV R0,x ADD y,R0,x/y //计算x/y 时R0 会被修改 } 在计算x/y 时R0 会被修改,从而影响R0+x/y 的结果.用一个C 程序的变量代替 R0就可以解决这个问题: __asm { MOV var,x ADD y,var,x/y } 内嵌汇编器探测到隐含的寄存器冲突就会报错 前景越来越光明了。. 晦涩的语法 Fog Creek公司最重要的雇佣标准是: 有头脑, 并且 就是这些了。符合这样标准的人就是我们公司需要的员工了。 记住这条标准。 每天上床前背诵这条标准。我们公司的目标之一就是雇佣拥有这样的潜质的人,而不是雇佣懂某些技术的人。任何人所拥有的某些具体技术都会在几年内过时,所以,雇佣有能力学习新技术的人,要比雇佣那些只在这一分钟知道SQL编程是怎么回事的人对公司更划算一点。 有头脑确实是一个很难定义的品质。但是让我们看一些在面试时能提问的一些问题,通过这些提问,我们可以找出拥有这种品质的人。完成工作非常关键。看起来有头脑但是不能完成工作的人经常拥有博士学位,在大公司工作过,但是在公司中没有人听他们的建议,因为他们是完全脱离实际的。比起准时交活儿,他们宁愿对于一些学院派的东西沉思。这些人由以下特性而可以识别出来。他们总是爱指出两个根本不同的概念间的相似性。例如,他们会说“Spreadsheets是一种特殊的编程语言”,然后花一个礼拜写一篇动人的,智慧的白皮书。这篇白皮书论述了,作为一个编程语言,spreadsheet关于计算语言特性的方方面面。聪明,但是没用。 现在,我们来谈谈完成工作但是没有头脑的人。他们爱做蠢事。从来也没有考虑过将来得靠他们自己或者别的什么人来亡羊补牢。通过制造新的工作,他们成为了公司的负债而不是资产。因为他们不仅没有为公司贡献价值,还浪费了好员工的时间。这些人通常到处粘贴大堆的代码,而不愿意写子程序。他们是完成了工作,但是不是以最聪明的方式完成工作。 面试时最重要的法则是: 做决定 在面试结束时,对于被面试者,你不得不做一个直截了当的决定。这个决定只有两个结果:雇佣或者不雇佣. 回到你的电脑前,立刻用电子邮件通知招聘负责人你的决定。电子邮件的主题应该是雇佣或者不雇佣。接着你需要在正文中写两段来支持你的决定. 没有其他的答案。永远不要说,“雇佣你,但是不能在我的团队中”。这是非常粗鲁的,因为你在暗示应试者没有聪明到能有和你一起工作的资格,但是以他的头脑适合进入那些天生输家队伍。如果你发觉自己被诱惑,想说出那句“雇佣你,但是不能在我的队伍中”,那么就简单的把这句话变成“不雇佣”再说出口。这样就没事了。甚至如果某个人在特定领域很能干,但是在别的队伍中将会表现不好,也是不雇佣。事物变化的如此之快,我们需要的是在任何地方都能成功的人。如果某些情况下你发现了一个白痴专家(拥有某些特殊能力的白痴),这个专家对于SQL非常,非常,非常的精通,但是除此之外什么也学不会,不雇佣。在Fog Creek公司他们没有将来。 永远不要说,“也许,我吃不准”。如果你吃不准,意味着不雇佣。看,比你想象的容易的多。吃不准?就说不!同样,如果你不能作出决定,那意味着不雇佣。不要说,”嗯,雇佣,我想是这样的。但是关于...,我想知道 ...”。这种情况就是不雇佣。 最重要的是记住这点,放弃一个可能的好人要比招进一个坏人强(译者按:中国有位哲人说过,宁可错杀一千,不可放过一个,呵呵)。一个不合格的求职者如果进入了公司,将要消耗公司大量的金钱和精力。其他优秀员工的还要浪费时间来修复这个人的错误。如果现在你还在犹豫,不雇佣。 如果你是Fog Creek公司的面试官,当你拒绝了大量的应聘者时,不要为Fog Creek公司将因此雇不到任何人了而忧虑。这不是你的问题。这是招聘负责人的问题。这是人力资源部的问题。这是Joel(译者注: Fog Creek公司的老板,本文作者)的问题。但不是你的问题。不停地问自己,哪种情况更糟糕?一种情况是我们变成了一个庞大的,糟糕的软件公司,充斥着许多脑袋空空如可可果壳的家伙,另一种情况是我们是一个小而高品质的公司。当然,找到优秀的应聘者(并聘用他们)是很重要的。找到有头脑而且完成工作的人是公司中的每个员工的日常工作之一。但是当你作为Joel Creek公司的一员真的开始面试一个应聘者时,要装作现在正有很多优秀的人想打破头挤进Fog Creek公司。总之,无论找到一个不错的应聘者是多么的难,永远不要降低你的标准。 但是你如何作出雇佣或者不雇佣这样艰难的决定?你只要在面试过程中不停地问自己:这个人有头脑吗?这个人能完成工作吗?要作出正确的回答,在面试时你必须问对问题。 开个玩笑,下面我要问个有史以来最差的面试问题: “Oracle 8i中的数据类型varchar和varchar2有什么区别”这是一个可怕的问题。掌握这种琐碎的技术细节和Fog Creek公司想雇佣你之间没有任何联系。谁会去记这种东西?如果有在线帮助,你可以在15秒内找到答案。 实际上,还有更差的问题,等会儿我会谈到的。 现在我们要谈到有趣的部分了:面试时提哪些问题。我的面试问题清单来自于我去微软公司找第一份工作的经历。这里实际上有几百个微软面试问题。每个人都有偏爱的问题。你也可以发展一套自己的面试问题以及面试的个人风格,这样你就可以比较容易地作出雇佣/不雇佣的决定。以下是我成功使用过的一些面试技巧, 在面试前,我读一遍应试者的简历,然后在一张纸片上随便写以下我的面试计划。这个计划实际上就是我要问的问题清单。以下是一个例子(用来面试程序员的):
在面试前,我非常,非常当心,避免自己先入为主。如果在面试前你就已经想当然地认为,一个麻省理工的博士一定是一个有头脑的人。那么在接下来的一小时的面试时间内,无论那个麻省理工的博士说什么都不能改变你的最初印象。如果在面试前你就认为这个应试者是个傻瓜,那么他面试时说什么也无济于事。面试就象一个非常精巧的天平。一小时的面试结束后就要对一个人下结论是不容易的(但是你又必须在面试结束后得出结论)。一些不起眼的细节可能会影响最后的结论。如果你在面试开始前对于应试者有了一点了解的话,就好比天平的某一端加上了重重的砝码。这样面试本身就会变得没有用处了。以前有一次在面试前,一个招聘负责人跑进我的房间说,“你肯定会爱上这个家伙的!" 对一个男孩? 天哪,这简直让我发疯。我本来应该说,“嗯,如果你这么确定我会喜欢他,为什么你不干脆雇佣他,何必让我浪费时间来面试?”但是那时我还太年轻幼稚, 所以还是面试了那个人。当这个家伙开始说一些蠢话时,我对自己说,“哇塞,这应该是个例外情况,也许是大智若愚。”我开始带着玫瑰色眼镜看他了。于是我以说“雇佣”结束了面试,虽然他是一个糟糕的面试者。接下来发生了什么事?除了我,其他的面试官都说,不要雇佣这个人。教训是,不要听别的人的话,在面试应试者前不要四处打探这个面试者的情况。最重要的是不要和别的面考官谈论应试者,除非你们都已经作出了独立的判断。这才是科学的做法。 作为面试步骤的第一步,介绍的目的是让应试者放轻松。我通常花30秒钟,讲一下我是谁,接下来面试会如何进行。我总是使得应试者确信,我们关心的是他(她)如何解决问题的,而不是他(她)的最终答案是对还是错。顺便说一下,面试时,你不要和应试者隔着一个桌子坐着,否则在你和面试者之间就有了一个障碍,并且暗示着一种比较正式严肃的气氛,这样应试者就很难放松了。更好的办法是把桌子靠墙放着,或者和应试者坐在桌子的同一边,这样有助于应试者放松。只有应试者不会因为紧张而表现失常,你才能更有效的进行面试. 第二步的内容就是问应试者最近做了些什么项目。对刚毕业的学生, 如果有论文就问问论文, 没有的话, 就问问他们做过什么很喜欢的大作业.例如,有时候我会问一下,“你最喜欢上学期哪门课程?不一定要和计算机相关的。”事实上,如果应试者回答的课程和计算机没有关系,我会比较高兴。有时候你会发现这个计算机系应届生选择了尽可能少的计算机相关课程,但是却选修了很多和音乐相关的课程。但是他(她)却说最喜欢的课程是《面向对象数据库》。哼哼,不错啊. 不过如果你直接承认你喜欢音乐胜于计算机, 而不是在这儿胡说八道的话, 我会更高兴一点。 当面试有工作经验的人时,你可以让他们谈一下前一份工作。 我问这个问题的目的是在寻找一样品质:热情。在应试者谈到他(她)最近做过的项目时,你观察到以下迹象都是不错的:
现在我们谈谈清单上的第三款,无法回答的问题。这很有趣。这个主意的关键在于问一些不可能有答案的问题,就是想看一下应试者怎么办。“西雅图有多少眼科医生?”“华盛顿纪念碑有多重?”“洛杉机有多少加油站?”“纽约有多少钢琴调音师?”
关于编程问题,我通常要求应试者用C语言写一些小函数。以下是我通常会出的题目:
注意,通常你不会希望他们写的代码多于5行,因为你没有时间理解太长的代码。 现在我们来详细看一看其中几个问题: 第一个问题: 逆序一个字符串。我这辈子还没有见过那个面试者能把这题目一次做对。所有的应试者都试图动态生成缓冲区,然后将逆序的字符串输出到该缓冲区中。问题的关键在于,谁负责分配这个缓冲区?谁又负责释放那个缓冲区?通过这个问题,我发现了一个有趣的事实,就是大多数认为自己懂C的人实际上不理解指针和内存的概念。他们就是不明白。这真叫人吃惊,无法想象这种人也能做程序员。但他们真的就是!这个问题可以从多个角度判断应试者:
第三个问题可以考考面试者对C的位运算的掌握,但这是一种技巧,不是一种品质,所以你可以帮助他们。有趣的等他们建立了一个子函数用来计算byte中为1的位的数目,然后你要求他们优化这个子函数,尽量加快这个函数的运行速度。聪明的应试者会使用查表算法(毕竟这个表只有 256个元素,用不了多少内存),整个表只需要建立一次。跟聪明的应试者讨论一下提高时间/空间效率的不同策略是十分有意思的事情. 进一步告诉他们你不想在程序启动时初始化查询表。聪明的面试者可能会建议使用缓冲机制,对于一个特定的byte,只有在第一次被查询时进行计算,然后计算结果会被放入查询表。这样以后再被查询时直接查表就行了。而特别特别聪明的面试这会尝试有没有建立查询表的捷径,如一个byte和它的置1的bit数之间有没有规律可循? 当你观察应试者写C代码时,以下一些技巧会对你有帮助:
不可避免的,你会在他们的程序中发现bug,于是我们现在来到了第五个问题:你对代码满意吗? 你可能想问,“好吧,bug在哪里?”这是来自地狱的一针见血的问题,要回答这个问题可要大费口舌。所有的程序员都会犯错误,这不是问题。但他们必须能找到错误。对于字符串操作的函数,他们通常会忘记在输出缓冲区加上字符串结束符。所有的函数,他们都会犯off-by-one错误(译者按:指的是某个变量的最大值和最小值可能会和正常值差1)。他们会忘掉正常的C语句结尾的分号。如果输入是零长度字符串,他们的函数会运行错误。如果malloc调用失败而他们没有为此写好错误处理代码,程序会崩溃。一次就能把所有事情做对的程序员非常,非常,非常地少.不过要是真的碰上一个的话, 提问就更有意思了. 你说,"还有Bug"。他们会再仔细地检查一遍代码。这个时候, 观察一下他们内心是否开始动摇了, 只是表面上勉强坚持说代码没有问题。总之,在程序员写完代码后,问一下他们是否对代码满意是个好主意。就像Regis那样问他们!(译者按,Regis Philbin是美国ABC电视网的游戏电视节目主持人,他的口头禅是“这是你的最后的答案吗?”) 第六部分:关于设计的问题。让应试者设计某样东西。Jabe Blumenthal,Excel的原始设计者,喜欢让应试者设计房子。Jabe说,曾经有一个应试者跑到白板前,画了一个方块,这就是他的全部设计。天哪,一个方块!立刻拒绝这样的家伙。你喜欢问什么样的设计问题?
于是我们来到了第七部分,挑战。这部分很好玩。在面试中留心一下, 当面试者的回答绝对的百分之百毫无争议时, 你可以说: " 嗯, 等一下等一下." 然后花上两分钟玩一下魔鬼的游戏(译者按,原文为devil's advocate,魔鬼代言人指的是违背自己的良知,为错误邪恶的观点辩护). 记住一定要在你可以肯定他正确时和他争论。 这个很有意思.
不得不承认,面试双方的地位并不是平等的。有可能应试者由于害怕你的权力而不敢于你争辩。但是,好的应试者有足够的热情和勇气坚持正确的观点,他们由于热切希望说服你而会暂时忘记正在被面试。这样的人就是我们要雇佣的人。 最后,可以问一下应试者有什么想问的。一些人喜欢看看应试者这时是否会问一些聪明的问题。这是市面上流行的面试书籍的标准技巧。我个人不在乎应试者问什么,因为这时我已经做了决定。麻烦在于,应试者也许已经见了5、6个人,进行了好几轮面试,他们可能很累了,以至于不能为每轮面试都准备一个聪明而独特的问题。所以如果他们没有可问的,没关系。 我总是留下面试的最后5分钟来推销我的公司。这很重要。即使我不打算雇佣眼前这个应试者。如果你幸运的找到一个很棒的应试者,你当然愿意做任何事情说服他(她)来你的公司。即使他们不是好的应试者,你也要尽力让他们为Fog Creek公司激动,这样面试结束时他们会对Fog Creek公司留下一个很好的印象。记住,应试者并不仅仅是可能的雇员,他们也是顾客,也是我们公司的推销员。如果他们觉得我们的公司很棒,他们也许会推荐朋友来面试。 啊哈,我记得我说过我会给出一些应该避免的非常不好的反面的试题例子。 首先,避免不合法的问题。有关种族,宗教,性别,出生国,年龄,服役记录,是否老兵,性取向,生理障碍的问题都是不合法的。即使他们的简历说他们1990年在军中服役,也不要问有关问题。也许这会让他们愉快地谈论在海湾战争中的经历。但是你的问题还是不合法的。如果简历上写着他们上过Technion in Haifa, 不要问他们是否是以色列人, 即使只是为了闲谈, 因为这是违法的. 下面有一个很好的不合法的例子。点击这里有很多关于什么是违法的讨论。(但是这个网站的其余问题够愚蠢的。) 其次,不要在问题中给予应试者暗示,我们公司喜欢或者不喜欢什么样的员工。我能想到的一个例子是问应试者是否有小孩或者是否结婚了。应试者也许会想我们不喜欢有家庭拖累的员工。 最后,不要问那些脑筋急转弯的题目,例如6根火柴怎么拼出4个三角形。象这样的灵机一动的问题是不能看出应试者是否有“有头脑/完成工作”的品质。 面试与其说是科学不如说是艺术。但是只要你记住有头脑/完成工作这个原则,你就可以应对自如。有机会就问问你的同事他们喜欢的面试问题和答案。这是我们公司员工午饭时热衷的话题之一。 |
linux 嵌入式面试 杂集二
2008年10月08日 星期三 11:28 A.M.
1、将一个字符串逆序 一.ANSI C/C++方面的知识 1、 如何在C中初始化一个字符数组。 逐个字符赋值:char s[] = {‘A’,’B’,’C’,’D’}; 字符串赋值:char s[] = {“ABCD”}; 对于二维字符数组:char s[2][10] = {“cheng”,”jinzhou”};
如果是栈的形式,Type s[N]定义后系统自动分配空间,分配的空间大小受操作系统限制; 若是堆的形式,Type *s; s = (Type *)malloc(sizeof(Type) * N); 分配的空间大小不受操作系统限制。
这里有必要重新对比一下指针数组与数组指针的差异。 a. 指针数组:数组里存储的是指针。 如:int * s[ 5 ] 表示数组s里存储了5个指向整型的指针。 Char * s[ 3 ] = {“aaaaa”,”bbb”,”ccccc”} 表示数组s里存储3个指向字符型的指针,分别指向字符串aaaaa、bbb、ccccc。 b. 数组指针:其实就是数组,里面存放的是数据。 如:int ( * s )[ 5 ] 表示数组s里存储了5个整型数据。
Int * s [ 10 ];
* ( s + 10 ) 二维数组S [ 5 ][ 8 ]的表示方法:*( *(s + 5) + 8 )
Include limits.h 在该头文件里 #define CHAR_BIT 8
使用Static,局部变量就存储在全局区(静态区),便具有全局的生命期和局部的访问控制。
没有理解到题目的意思,我只是想说明一点,定义常量字符串后它属于const型,不能去修改它,否则程序出错。
、如何在两个.c文件中引用对方的变量。 使用extern
定义一个指针后就可以malloc了。
Realloc后返回的指针与之前malloc返回的指针指向的地址不同。
首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL
这里要将Scanf( )、gets( )放在一起比较。Scanf( )是遇到空格就判断为输入结束,而gets( )则遇到回车才判断为输入结束。
尚不清楚,望博友能告知,万分感谢!
根据自增运算符的右结合性,它是(a++)+(++b)的意思,但有的编译器里省略括号就不能通过,同时也降低了程序可读性。
#define TRUE 1 #define FALSE 0
Const是只读的意思,它限定一个变量不允许被改变。 #define缺乏类型检测机制,在预处理时候有可能引发错误。 Const方面的其它知识扩展: 问题1:const变量 & const 限定的内容 下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢? typedef char * pStr; char string[4] = "abc"; const char *p1 = string; // *p1 作为整体不能被修改,但p1可以修改,p1++合法 const pStr p2 = string; //相当于const (char*)p2=string.p2作为一个整体,不能被修改,但是下面的p2++非法修改,pstr不是简单的代替。 p1++; p2++;
问题2:const变量 & 字符串常量 请问下面的代码有什么问题? char *p = "i''''''''m hungry!"; //定义的是字符串常量 问题:const变量 & 字符串常量2 char a[3] = "abc" 合法吗?使用它有什么隐患? 没有考虑到字符串结束符‘\0’,所以会产生意想不到的错误。 比如以下程序: int main() { int i; char p[6] = {''''''''a'''''''',''''''''b'''''''',''''''''c'''''''',''''''''d'''''''',''''''''e'''''''',''''''''f''''''''}; printf("%s",p); while(1); return 0; } 运行后显示: abcdef@ 问题3:const & 指针 类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么? 1)、const在前面 a. const int nValue; //nValue是const 把类型int撇开,变量nValue作为一个整体,因此 nValue是const型; b. const char *pContent; //*pContent是const, pContent可变 把类型char撇开,变量 *pContent作为一个整体,因此 *pContent是const型; 把类型char * 撇开,注意这里(char * )是一个整体,而变量 pContent作为一个整体,因此 pContent是const型; d. char* const pContent; //pContent是const,*pContent可变 const与变量间没有类型,变量 pContent作为一个整体,因此 pContent是const型; e. const char* const pContent; //pContent和*pContent都是const 这里分为两层,外层:把类型char 撇开,变量 * const pContent作为一个整体,因此 * pContent是const型;内层:没有类型,因此 pContent 是 const 型。 2)、const在后面,与上面的声明对等 (这类型更容易判断) a. int const nValue; // nValue是const const与变量之间没有类型,const后面那部分整体是const型,因此nValue是const型 b. char const * pContent;// *pContent是const, pContent可变 const与变量之间没有类型,const后面那部分整体是const型,因此 * pContent是const型 c. const(char *) pContent;//pContent是const,*pContent可变 const与变量之间没有类型,const后面那部分整体是const型,因此 pContent是const型 d. char* const pContent;// pContent是const,*pContent可变 const与变量之间没有类型,const后面那部分整体是const型,因此 pContent是const型 e. char const* const pContent;// pContent和*pContent都是const 分为两层,外层:撇开类型char,const后面那部分整体* const pContent是const型,因此 * pContent是const型;内层:const与pContent之间无类型,因此pContent是const型。
C++中CONST C中常用:#define 变量名 变量值定义一个值替代,然而却有个致命缺点:缺乏类型检测机制,这样预处理理在C++中成为可能引发错误的隐患,于是引入const. const使用: 1. 用于指针的两种情况:const是一个左结合的类型修饰符. int const *A; //A可变,*A不可变 int *const A; //A不可变,*A可变 2.限定函数的传递值参数: void function(const int Var); //传递过来的参数在函数内不可以改变. 3.限定函数返回值型. const int function(); //此时const无意义 const myclassname function(); //函数返回自定义类型myclassname.
volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化,但有可能会读脏数据。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 下面是volatile变量的几个例子: Volatile的完全扩展: 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。 1 请用最简洁的语言描述您从前的工作经历和工作成果。 测 试应聘者是否能够用几句话概要地介绍其主要的工作信息和重点业绩,而不是以流水帐的形式重复履历表有已经注明的内容。在介绍工作成果时,注意应聘者能否正 确表述其在原单位所发挥的作用。尽管有关基本能力的提问大多可以通过简历或应聘表格反映出来,但通过回答可以考察应聘者的语言表达能力、仪表神态、目光注 视程度、肢体语言等方面。 2 您为什么重新求职? 测试应聘者的求职动机是否合理。重新求职的原因可能因为应聘者原单位的问题,但通过回答可以考察应聘者是否既能客观、委婉地说明原由。 3 什么样的单位是您求职的第一选择? 测试在应聘者心目中是否对自己和单位的定位清晰明确,而不是盲目应聘。 专业背景 4 您认为此工作岗位应当具备哪些素质? 测试应聘者认为的岗位素质与招聘需要的岗位素质的吻合程度。 5 请谈谈你对您所从事专业的理解,在专业方面有哪些重要的成果? 考察应聘者的专业功底。 6 您认为自己应聘的职位在公司里所应当承担的主要职责是什么?您个人有哪些方面的优势能够胜任这一职位?还存在哪些缺陷和不足,准备如何来弥补? 考察应聘者个人对工作的理解以及是如何考虑个人与工作之间的匹配性的。 7 您认为自己在这个岗位上的竞争优势是什么? 通过回答找到此应聘者与其他应聘人员的优势差异。 工作模式 8 您平时习惯于单独工作还是团队工作? 工作习惯与应聘者应征的工作岗位有关。通常需要经常与他人合作或接触的岗位 ( 如秘书、公关等 ) 建议团队工作习惯,而技术、设计类型的岗位则相对独立性较强。 9 在工作中您喜欢用哪种形式沟通?您认为什么是最有效的沟通形式? 通常面对面直接沟通的方式最为有效,与书面沟通相比,面对面沟通发生误解的可能性较小,除非两一见面就剑拔弩张。 10 在过去的工作中您学习到了什么? 考察应聘者是否能够从专业成就、人际关系、组织、产品、服务等多个角度来回答问题。当谈及其从前的经历时,可测试应聘者是是否是个忠诚的、懂得尊重别人的员工。 11 您如何使自己了解业务上的最新动态? 无论什么领域,都会有大量专业资料刊登在各类刊物上。对自己的专业研究得越深入,就越需要获得新的信息来源。 12 请介绍您原来单位的几个主要竞争对手的情况。 通过回答测试应聘者的市场竞争意识。对本单位津津乐道,但对市场状况及竞争行情不甚了解的人员不是一名全面的工作人员。 13 您在工作中通常怎样分配时间? 测试应聘者对时间的分配和使用习惯。 14 您未来三年内的目标是什么?如何实现? 考察应聘者是否对自己能够提出明确的目标,并有切实的行动计划;而不是“继续做好现在的工作”、“加强学习”等模糊的概念。 15 您对我们公司以及您所应聘的岗位有什么了解? 一 名态度认真的求职者往往会在面试之前通过多种渠道去了解应聘单位。如果在应聘的开始已经向应聘者进行介绍,可测试应聘者倾听的关注程度。如果事先没有向应 聘者进行有关本单位的情况介绍,应聘者可以会借此机会提出了解单位的情况。主试人员在介绍完毕之后,仍可通过类似问题考察应聘者。 价值取向 16 您对原来的单位和上司的看法如何? 大骂原来单位及同事的应聘者绝非一名有修养的员工。考察应聘者是否能够客观委婉地表达其看法,并结合自己放弃原来职位的意图。 17 业余时间您通常用来做什么? 考察应聘者是否能够平衡工作与生活之间的关系。 18 描述您上一次在工作中挨批评的情景。 测试应聘者在既属于个人隐私、又有很强的专业性的领域里的沟通能力如何,以及应聘者是否经得起批评,并了解他以前的工作环境和沟通状况。 19 您是否愿意接受心理测试? 考察应聘者是否能够坦诚相告。 20 您觉得怎样才算是成功? 考察应聘者是否能够把受到赏识与做出有意义的贡献联系在一起,而且可以正确地平衡事业与家庭之间的关系。 21 您认为做人的基本原则是什么? 考察应聘者个人的行为准则和道德规范意识。 资质特性 22 您如何描述自己的个性? 测试应聘者的个性与招聘单位的文化、风气、行为准则、岗位特点等之间的匹配程度。例如:外向性格在公关、市场等工作岗位更具优势,内向性格在科研、档案等工作岗位更具优势。 23 请列举您的三大优点和三大缺点。 应聘者是否能够坦诚相告自身的特性,并考虑其特质是否影响到此岗位的工作及团队工作。 24 您原来的同事通常是如何评价您的? 考察应聘者是否了解自己在他人心中的看法,并正视面临的问题。 薪资待遇 25 是否方便告诉我您目前的待遇是多少? 26 您所期望的待遇是多少? 如果应聘者要求与更高层的主管商谈待遇问题,招聘者可巧妙地变换提问方式,“我们只是希望清楚您能够接受的待遇范围,例如税后月薪 2000-2500 元左右。” 27 您要求公司必须的福利有哪些?另外希望公司提供什么样的福利? 涉及到人力成本及相关法规的问题,同时通过应聘者谈到原单位的福利时可以看出单位实力,以及自身的承受能力。 背景调查 28 您是否介意我们通过您原来的单位进行一些调查? 重要的职位是必须进行调查的。通过应聘者回答问题时的态度及调查的材料可以测试其诚实程度。 |
|
linux 嵌入式面试 四
2008年10月08日 星期三 12:19 P.M.
. What does the following program print? (中国台湾某著名计算机硬件公司2005年12月面试题) |
linux 嵌入式面试 五
2008年10月08日 星期三 12:20 P.M.
1、 如何在C中初始化一个字符数组。 |
linux 嵌入式面试 杂集六
2008年10月08日 星期三 12:24 P.M.
C语言面试题 3.在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么? |
linux 嵌入式面试 杂集七
2008年10月08日 星期三 12:27 P.M.
1、局部变量能否和全局变量重名? |
linux 嵌入式面试 杂集八
2008年10月08日 星期三 12:28 P.M.
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
char * const p;
char const * p
const char *p
上述三个有什么区别?
char * const p; //常量指针,p的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可以改
const char *p; //和char const *p
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";
cout << ( str1 == str2 ) << endl;
cout << ( str3 == str4 ) << endl;
cout << ( str5 == str6 ) << endl;
cout << ( str7 == str8 ) << endl;
结果是:0 0 1 1
解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
以下代码中的两个sizeof用法有问题吗?
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i="0"; i