上一篇讲到了如何写面试中的代码呢?为什么不在上一篇写呢?上一篇写的太多了,你看了多了肯定就会晕死了,有一个思考的疲劳了,考虑到了这一点。呵呵!好了,开始吧,如何写出好的面试代码!来吧!一下都是个人观点,仅供参考!如有错误,不符合,或者有偏差,请提出,也让我有提高,好了,伙计,开始吧,有点话多了!

写程序,写代码,是在面试中必不可少的环节,你要拿题,上机写出代码,好了,你可能不知道其中有多少的“猫腻”,是吧,伙计。别人我读不告诉他。

一:你要读懂题,懂得题意,要让你实现什么功能,看看题目的要求。

二:如果是算法题,在脑海中想算法的思想,在纸上写出伪代码,一般公司的面试算法题,无非就是那几道,没有更深的,当然了,我说的是一般的公司(不包括 google , microsoft 等),你可以在纸上走一遍算法,什么叫走一遍算法,就是对算法,举一个例子,用例子来验证你的算法。

三:非算法题,就是让你实现某些功能,这些都是题一般都是考你对数据结构的了解和掌握程度。

四:在写代码时,一定要注意代码的细节问题。让自己写的代码脱颖而出,是的,我也这么想的。代码的健壮性和安全性,是你不得不去考虑的问题,有的时候两者不能兼得,那就要考虑一个中间的方法了。

五:面试中的上机写代码题一般都是很简单的,不会很难的,这个你懂得。

好了,下面我就从几个实例来说明如何写面试中的代码:

例题一:

一个链表的操作,注意代码的健壮和安全性。要求:

( 1 )增加一个元素;

( 2 )获得头元素;

( 3 )弹出头元素(获得值并删除)。

好了,读题!题目很简单了,如何实现了,是的,只有三个功能,这在面试题中,已经是要求较多的了。

首先,是链表,不要告诉我,你说你看成数组了,那只能说那一个上帝蒙住了你的双眼。

再看看要求,题目特别要求,注意代码的健壮性和安全性。是的,你看到了吗?

还有呢?是的,没了,就只有三个功能了,很简单的功能。

好了,伙计,来吧,让我们完成这道题吧!

现在,题目在我的心中,代码似乎有了雏形,我使劲回忆着自己写的代码,关于链表操作的代码,如果你想看看我写的链表操作的代码,我有这么一篇博文的。去看看吧,或许,不错(其实,那是一篇和糟糕的博文,为什么这么说,因为很多的细节没有注意到,只是实现了某些基本的功能和操作而已)。是的,我想起来了,链表,一个节点挨着一个节点的,节点由两部分组成,数据域和指针域,是吧,我没有操作,还有什么?一个类,一个对链表操作的封装的类。好了雏形有了。

是的,上面的这中方法看起来不错,是的,自己来实现每一行代码。何不去想想别的方法,比如有现成的类库来实现,是的,伙计,你应该想到的。题目很清楚的说了,没有不允许你用现成的类库来实现, C++ 的标准类库,标准类库的健壮性和安全性,你不应该去怀疑的,好了,既然他没有说,那就用类库来实现吧, STL ,不错的选择,安全性有点,但是,至少比你自己写的好多了。来吧,已经说了这么多了。

#include <iostream> #include <list> #include <algorithm> using namespace std; int main() { list<int> iList; //为什么是整形的,因为我喜欢它 int iElement; //你要插入元素 int iHead; //头元素 cin>>iElement; iList.push_back(iElement); //是的,第一个功能完成了,就是这么简单 iHead = *iList.begin(); //这是第二个功能 cout<<iHead<<endl; iList.erase(iList.begin()); }

以上是用 STL 库来实现的,如果需要自己完全实现的话,代码可能就不只是这么点了,如果你对第一种方法感兴趣,我有一篇关于链表的操作的博文,不妨看看!

其实,如果真正的来分析这道题得意思,到底用什么来实现好呢?出题人想让你用什么来实现呢?其实,这个也说不清楚,真的不好琢磨的。用自己完全实现的方法来做这道题,考察基本功的扎实程度,用 STL 来实现,考察你对 STL 类库的基本掌握情况。以我个人的话来说,我会将二者都写上,为什么,因为 STL 实现起来很简单,不会浪费什么时间。而完全自己实现链表的操作,则能展示自己的扎实的基本功,这样是很不错的,如果你怕画蛇添足,选择你最稳的方法来实现,但是,话又说回来,如果对链表的操作基本功都不过关, STL 更是一塌糊涂的。

例题二:

编写 my_strcpy 函数,实现与库函数 strcpy 类似的功能,不能使用任何库函数;

好了,这道题,很明显,不能使用任何的库函数。 Strcpy 的功能你不知道的话,我只能说,其实你已经可以放弃这次面试了。不是吗?像这种实现某个特定类库中函数的功能是面试中的常客,大家需要多多的练手的。此时,你对于此题,需要知道什么? strcpy 的函数原型,参数是什么,返回值类型。

#include <iostream> #include <assert.h> using namespace std; char *my_strcpy(char *strdest, char *strsrc); int main() { char *strsrc = "GuoDong Young"; char strdest[50] = ""; cout<<my_strcpy(strdest, strsrc); } char *my_strcpy(char *strdest, char *strsrc) { assert(strdest != NULL && strsrc != NULL); char *address = strdest; for (; *strsrc != '/0'; strsrc++, strdest++) { *strdest = *strsrc; } *strdest = '/0'; return address; }

好了,面试中还是靠自己的能力水平了,读懂题意,注意细节,该判断变量的合法性就要判断。一定要让自己的程序好看又实用了。

注:文中内容仅为个人观点,代码如有错误,或者不妥,请大家提出,因为我也是菜鸟,还没有到达写出完美代码的时候。如果大家有好的方法,希望大家能共享你的代码,我们共同交流!

转载于:https://www.cnblogs.com/JPAORM/archive/2011/03/28/2509894.html

面试—每日一题(7)相关推荐

  1. 面试—每日一题(8)

    好长时间没有更新博客了,特别是这个专栏,一是因为自己比较忙,二是因为我还是比较懒的缘故.让各位见笑了.今天在更新一篇. 像什么strcpy.strcat等等字符串的操作和实现在面试中经常出现,不管是上 ...

  2. 面试—每日一题(6)

    今天是第六期了!也总算到第六期了,不管搞什么,都贵在坚持!我还会坚持下去的,直到我找不到 面试来写为止!呵呵!我看,这下子够我喝一壶的了! 今天这篇博文没有前几期的那么有主题,就是今天的这篇博文比较杂 ...

  3. 面试—每日一题(5)

    又是面试-每日一题,今天已经是这个系列的第5篇博文了!继续~~希望大家也能给力,给我顶起,也 好让我写的有信心啊! 好了,废话少说!开始今天的正题! #include <iostream> ...

  4. 面试—每日一题(1)

    大家好,现在本博文推出<面试-每日一题>专栏,专注于对面试题的讲解和解答.列举出各个公司的一些面试题,总结出其中的面试题得答题技巧,为以后的面试铺平道路.希望大家,有钱的捧个钱场,没钱的捧 ...

  5. 面试—每日一题(4)

    又到了每日一道面试题了!今天题比较简单,但是确实你平时没有注意到的问题! 题如下: 下面是C语言中两种if语句判断方式.请问哪种写法更好?为什么? int n; if (n == 10) // 第一种 ...

  6. 面试—每日一题(3)

    嘿,伙计,你在读我的博文吗?如果在,那就提点意见吧! 好了,今天的题目,是我最讨厌的,也是让我最头疼得,但是,这个问题确实很重要的,不会它不行的,是的,考官是很喜欢这个题的,考它,那是经常的.来吧,伙 ...

  7. 面试—每日一题(2)

    好了,不知道上一篇大家掌握的怎么样了,现在又是新的一题了.这个题不是写代码,而是分析代码,分析代码,有讲究,有什么讲究呢?那就听我给大家一一到来! 分析代码的讲究: 首先,代码分析题在面试中,都不会很 ...

  8. Android面试每日一题(4): 哪些情况下会导致oom问题?

    1.根据java的内存模型会出现内存溢出的内存有堆内存.方法区内存.虚拟机栈内存.native方法区内存: 2.一般说的OOM基本都是针对堆内存: 3.对于堆内存溢出主的根本原因有两种 (1)app进 ...

  9. EETOP版主后端面试问题 每日一题

    转载地址:版主个人空间 转载的csdn地址:csdn地址 后端面试–每日一题(084) Design 4-bit asynchronous counter? how to set timing con ...

最新文章

  1. 企业如何提升管理能力,让企业协作更顺畅?
  2. 大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)...
  3. ajax 实时进度_如何做好项目进度管理?
  4. 三月疯狂——最终结果 / March Madness – Final Score
  5. mysql 触发器 注意事项_MySQL触发器的利弊-使用MySQL触发器时应该注意的事项
  6. devops 应用_如何在DevOps中应用系统思考
  7. 【英语学习】【WOTD】accolade 释义/词源/示例
  8. python的skimage库 图像中值滤波;均值滤波;极大值滤波
  9. ModuleNotFoundError: No module named ‘sklearn‘ 解决办法
  10. 数据库之SQL增删改查(UPDATE,DELETE,TOP,COMPUTE,WHERE子句)
  11. 分布式事务 - 两阶段提交与三阶段提交
  12. 激活win7 home版 administrator
  13. html网页文本框无法输入,浏览器打开网页文本框无法输入文字如何解决
  14. 安卓APP开发日记1——名为Another的日记APP开发
  15. Quorum工作原理
  16. AR涂涂乐⭐二、 给material赋予材质、移除material、调整扫描框透明度
  17. [易飞]信息传递-多表(含外表)关联取值
  18. 苹果Arm芯片适配开发 (Apple Silicon)
  19. C# 闹钟「定时提醒,整点报时」
  20. CortexM4内核Stm32-HAL_Init()及HAL_InitTick(TICK_INT_PRIORITY()详解——Systick中断优先级

热门文章

  1. struts2(一) struts2入门
  2. Codeforces Round #342 (Div. 2)
  3. AndroidManifest.xml中的android:name是否带.的区别
  4. 【恋上数据结构】插入排序及二分搜索优化
  5. ZooKeeper官方文档学习笔记03-程序员指南02
  6. mongo java aggregate_java使用spring + mongo进行Aggregation聚合查询
  7. 深化管理、提升IT的数据平台建设方案
  8. 巧用tab组件实现APP的布局效果
  9. android自定义滚轴选择器_Android自定义控件实战—滚动选择器PickerView
  10. 实现基于内核栈切换的进程切换-linux011