几个常见的C语言面试题分析
一次去一个小公司面试,没有太重视,当时由于工作甚忙,也没作准备。他们给我的试卷有大量的题,规定一个小时必须做完,一看题量,吓了一大跳,题有链表,有多维数组,有大量的程序阅读,幸亏基本功还算扎实,未辱使命,差强完成。等到做到编程题时,才发现自己太长时间没有写过程序了,让一些琐碎的改BUG工作和代码维护浪费了太多的精力。一直做下去,心里暗暗吃惊,一个小时,这个题量如果是在刚毕业时,还是有可能完成的,工作几年后,压力渐小,写程序基本都是拿来主义,对标准库函数的原理把握和编程能力越来越退化。由于当时时间紧迫,所写程序也不够完善,过后又思考了一下,回到家后赶紧又对这些问题总结了一下。下面对面试中遇到的编程问题分析了一下。真是人在社会如江湖呀,学习是一刻也不能放松的事。稍一不慎,晚节不保不说,反而会阴沟里翻船。
1.获取路径下的文件名
char * FindFileName(char * s)
{
int len;
char *tmp=NULL;
ASSERT(s != NULL);
for (len=strlen(s); len>0;len--)
{
if((s[len]=='/') ||(s[len]=='//'))
{
tmp = &s[len+1];
break;
}
}
return tmp;
}
2.把整型转化为字符型
char * i2a(int n, char *s)
{
int i, sign;
ASSERT(s != NULL);
if ((sign = n) < 0)
{
n = -n; //转为正数,利于取位
}
do
{
s[i++] = n % 10 + '0';
}
while ((n /= 10) > 0)
if (sign < 0)
{
s[i++] = '-';
}
s[i] = '/0';
reverse(s);
}
3.把字符型转为整型
int a2i(char * s)
{
int i, n, sign;
ASSERT(s != NULL);
for (i = 0; s[i] == ' '; i++)
{
NULL; //如果字串前有空格,跳过所有空格
}
sign = (s[i] == '-') ?: -1 : 1;
if (s[i] == '+' || s[i] == '-')
{
i++; //判断是正整数串还是负整数串
}
for (n = 0; s[i] > = '0' && s[i] <= '9'; i++)
{
n = 10 * n + (s[i] - '0');
}
return sign*n;
}
4.输出字符串倒文,不能动态分配内存
char * reverse(char * s)
{
int c, i, j;
ASSERT(s != NULL);
for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
return s;
}
5.查找子串是否存在
int strindex(char *str,char *searchstr)
{
int end, i, j;
ASSERT((str != NULL) && (searchstr != NULL));
//计算结束位置
end = strlen(str) - strlen(searchstr);
if ( end > 0 )
{
for ( i = 0; i <= end; i++ )
{
for ( j = i; str[j] == searchstr[j-i]; j++ )
{
if ( searchstr[j-i+1] == '/0' ) /* 子字符串字结束 */
{
return i + 1; /* 找到了子字符串 */
}
}
}
}
return -1;
}
营销策划常见面试题有哪些?
营销策划常见面试题有很多,比如:1、你怎么样处理上下级之间的冲突或是与客户之间的冲突?请举一个实例说明。回答:在处理上下级冲突时,我认为双方都应尽量做到换位思考。即使事情紧急,双方火气上头,也要尽量冷静下来,并尽快地思考矛盾的核心是什么,怎么解决,而不是拉开架势争吵——至少双方中有一人要做到。2、你会为什么而离职?你对待工作的感想或是感受是什么?什么让你最受挫折?回答:我会因为,公司的文化,发展方向,工作环境以及我的家庭而离职,我认为工作就是要自己做着舒服家人朋友支持,我所做的工作能够给公司或他人带来效益,这样工作才有意义。在工作中最让我受措的是我的努力得不到认可。3、你负责过哪些营销推广活动的项目?重点项目中负责哪些阶段?自己充当的角色?业绩?回答:11年到今年四月份在一家小额贷款公司工作;因为是内勤的职务,业务自己也都联系;本身公司业务种类少所以成单率不是很高,我的原则是只有舍才有得,所以一般公司不做的业务给同行他们才会给我;自己出钱做了海报帖子交通要道的报刊亭的橱窗里;本身这就不是立竿见影的产品,大概一年内通过广告这个方式赢得的业务大概有六-八单;我很喜欢挑战创新,大家都用的方式不是没用效果只是没有那么容易见效;为其奔波的过程从内心里是十分的高兴,我自己想做的去做了并收到了相应的回报所有很高兴;大学期间任过兼职在学校超市里做收银员,因为发生过一次糕点过期的问题,学生带了七八个同学过来而且的态度不是很好。我说给他退了再换一块,他不是很满意;不但向其道歉最后给了他五块糕点。我们的客户对象就是学生,不能因此而造成消极的影响;让竞争对手而有可乘之机。4、假设你是领导,你如何判断他是否合适该岗位?重要考核指标有哪些?回答:首先从3大方面考虑,态度,人品,实力。第一,态度,如果一个人拥有100的才华但是他并不喜欢这工作只发挥20%,但是另外一个人只拥有50的才华但是他喜欢这工作能发挥40%。我宁愿要后者。(当然如果前者可以培养兴趣或者通过其他方面激发他的工作积极性那么需要额外考虑)第二,人品,如果一个人诚信值得商榷那么这个人的能力越强,反而对公司的危害越大。公司需要个人才我想首先考虑的是忠诚,可靠,而实力是放在第二位的。第三,实力,前两者考虑过后那么实力当然是最重要的了,无论哪个地方都是实力者才能生存的法则。实力才是综合性体现自己才能的途径。无论哪个公司都不会要一个没用的人。那么现在考虑是否适合岗位,从以上3点,如果这个人喜欢这个岗位,而且人品值得信任,最后他拥有做好这个岗位的实力那么他就是合适的。
c语言面试经常问到的问题有哪些?
c语言面试经常问到的问题有:1、C语言的主要特征是什么?C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。2、i ++和++i有什么区别?1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值并返回新值。2)后缀++的优先级高于前缀++。3)后缀++的关联性从左到右,前缀++的关联性从右到左。4)在C ++中,++i可用作左值,但i ++不能用作左值。在C中,它们都不能用作l值。3、什么是l值?l值或位置值是指可以在赋值运算符左侧使用的表达式。例如,在表达式“a = 3”中,a是l值,而3是r值。l值有两种类型:“不可修改的l值”表示无法修改的l值。const变量是“不可修改的l值”。“可修改的l值”表示可以修改的l值。4、数组和指针有什么区别?指针用于存储动态分配的数组的地址,以及用于作为参数传递给函数的数组。在其他情况下,数组和指针是两个不同的东西,尽管数组和指针是不同的东西,但是数组的以下属性使它们看起来相似。5、C语言中的“循环”数据类型是指什么?所谓的“循环”数据类型,其实就是某种类型的数据溢出后,又从头开始存储。一个典型的例子是unsigned char变量若已经等于255,仍然对其加1,那么该变量就会溢出从头开始,也即等于零:unsigned char a = 255。a = a+1;// a等于0。
C语言笔试或面试一般会问到什么问题
既然是面试,一定要提前准备,最好准备一套自我介绍,包括对IT行业的看法之类,面试官经常会问这些问题。
由于c语言是程序员工作语种的其中1个,所以对于程序员这个工种,还是有一些具体的注意事项:
第一、基础很重要,不要生疏了。
不管应聘什么开发岗位,基础永远是最重要的。IT业不停地在炒作新概念,昨天是SOA,今天是云计算。我们永远不知道明天流行什么,但是只要有踏实的基础,辅以较好的学习能力,要跟上步伐也不会太难。所以绝大多数公司都会特别看重应聘人员的基础能力,比如编程语言本身的特性、基本的算法和数据结构、进程间通信等等,毕竟这些具体技术问题有客观的答案,而且在各具体行业都是相通的。
工作三年以上的人,往往都习惯了“拷贝+修改”式的工作,用不到的基础知识基本上都忘掉了,一到应聘的时候就难免眼高手低,总是抓不住机会。
而事实上,技术基础即便是遗忘了,也是可以很快捡起来的。如果求职者确实忘了很多基础知识,那么参加面试的前夜,花点时间把大学里的课本再翻出来看看吧。似乎很土的方法,但确实是有效的。
第二、要关注技术前沿。
不管做任何工作,如果只顾着低头做事,而不晓得抬头看天。那么不管做多久,自身的水平总是停留在毕业时的水平;如果基础又忘记了太多,那还不如毕业生。
关注技术前沿,并不是要求跟进每一个新技术,而只需关注目前主流媒体经常宣传的一些新技术、新思想。关注这些技术前沿的动向,并能与自己从事的工作联系起来作一些深入思考,那么这是向面试官宣扬求职者的学习能力的一种好办法。
第三、小公司比较看重知识的广度,大公司更看重知识的深度。
如果求职业想去一些小公司工作,那么由于他们人少,分工没那么细,所以用人单位大多喜欢知识面广的应聘者——求职者会听到更多的“怎么做”。对于应聘这样的公司,求职者可以着重培养知识的广度,比如做网站后台开发,最好也能js、css、apache、mysql都懂一些,能独自搭建一套完整的网站,这样去很多小公司难度都不太大。但是由于个人的精力总是有限的,所以要注意不要铺得太开,重点还是在后台开发本身。
而大公司由于分工比较明细,所以往往更喜欢考量重点知识面的深度——求职者会听到更多的“为什么”。所以平常解决问题时,不要光搜索一把解决了就完了,还需要仔细研究各种问题的来龙去脉,并能分析总结,将这些收获系统化、理论化。
当然,广度和深度的需求不是绝对的,一个优秀的开发人员应该对至少一到两个专业领域有着深入的了解,并熟悉其他相关领域,也就是所谓的一专多能。
第四、良好的简历设计可以为你的应聘加分。
社会应聘的简历往往比校园应聘的简历写得随意,因为有工作经验的人往往认为面试官会更看重他的工作经验,而不是简历格式。其实不然。
大多数简历只会出现在面试官面前10秒到1分钟不等。这个短短的时间内,如何让求职者脱颖而出?这个方面有很多的攻略,我只说重点建议,不解释原因。
一是简历要突出优势,而不是描述经历。比如出身名校、就职过名企、参与过著名项目、拿过大奖,这些比较客观的优势要重点突出。如果求职者没有UI的功底,那么简单地放大加粗也可以达到效果。当然有些公司只接受文本型简历,那就设法加一些特殊符号吧。
二是技术简历减少模糊化的语句,最好能数字化。例如项目代码量,维护的数据量,网站的访问量,请求平均耗时等等。
三是简历要能结合应聘岗位做一些匹配的修改。撇开招聘网站通用的简历不谈,如果求职者明确对一个特定公司的特定岗位投出简历,那么求职者有必要把跟对应岗位无关的内容弱化,并强化跟其业务相关的内容。如果实在行业差别太大,那么表达几句对其行业的见解和兴趣也是可以的。
第五、要有积极的沟通意识。
优秀的面试官会激励应聘者讲他原先工作的内容,并从而评估出应聘者的能力水平。但隔行如隔山,绝大多数面试官会慢慢将问题引向自己熟悉的领域——这往往又是应聘者不太熟悉的领域。这就要求应聘者能积极分析面试官的兴趣点,并将自己相近的特长表现出来。
如果跟面试官有了意见冲突,也尽量不要再同一个问题上纠缠。那也许是故意制造的陷阱——看看求职者的团队意识。应聘者需要明白的是,在面试场合中不要妄图“战胜”面试官,即便是碰上一个期望“战胜”应聘者的面试官。
第六、要有良好的表达能力。
没有哪个面试官喜欢啰啰嗦嗦说了半天还是没说到点子上的应聘者,所以要尽量简明扼要地回答问题,除非面试官确实表现出对具体细节的兴趣。 回答问题时注意面试官的情绪变化,一旦他表现出任何想打断的意愿,立即一句话结束这个话题。有些比较复杂的问题,可以先思考十到二十秒钟,因为一旦开口就没有思考的时间,话多的人不容易收住话题。
跟学校考试不一样,大多数主观性问题并不要求应聘者一二三四说得滴水不漏,能说到大部分关键点就是可以的了。另外注意,各种技术术语不要搞混了。搞不清楚的理论概念,不如不说。免得面试官听到个术语就拉出来穷追猛打,把自己问挂。
第七、自信。
大多数做技术的,平时都信心满满,一到应聘的时候却总觉得自己不懂的东西还太多。回答问题时声音太小,或者畏畏缩缩用很多“可能”“也许”“大概”。这个不一定影响求职者的录用,但是不自信的表现无疑会影响在跟HR谈薪水时候的议价能力。所以,无论如何,应聘的时候表现得轻松镇定一些,还是很有好处的。
当然,自信和自大之间往往只有一线之差。千万小心,不要过度地表现自信搞成了自大,因为HR往往对这一点非常敏感。如果求职者只是要谨慎地表现自信的话,只要回答问题时面带微笑就够了。
最后需要特别提醒的是,以上种种其实只不过是应聘时的技巧和注意点而已。职业规划需要有长远的眼光和坚持不懈的学习。台上一分钟,台下十年功。真正的实力还是要在平时工作和学习中进行积累。