第0部分 简介

1. 举个例子:面试的时候,可能会出一道算法考试题,比如写一个 strstr 函数——字符串匹配。

可能会想到用KMP算法来解题,但是该算法很复杂,不适宜在面试中使用。

1.1 C++利用char*的例子。该方法的复杂度是O(n)。注意代码中的注释,每一对括号的后面都给出了注释说明,用于匹配括号。

/**
strstr
return the position of the first occurence of string target
in string source, or -1 if target is not part of source
*/
int strstr(char *src, char *dest)
{
int len = ;
for (int i = ; dest[i] != '\0'; i++)
len++; int i = , j = ;
while (src[i] != '\0')
{
if (src[i] == dest[j])
{
j++;
if (j == len)
{
return i - j + ;
} // if j == len
} // if src[i] == dest[j]
else
{
j = ;
} // else i++;
} // while src[i] != '\0'
return -;
} // strstr int main()
{
char *src = "i am a chinese ";
char *dest = "a "; printf("%d\n", strstr(src, dest)); return ;
}

这一种是非常普通的解法。

1.2. 注意编码规范问题,比如加入空格、适当的缩进。

1.3. strlen() 函数的时间复杂度是 O(n),要尽量减少使用次数。

2. IT技术人员应该具备“翻越长城墙”这一基本技能。

3. 编码风格应该参照《google coding style》

  编码风格:缩进、拓号、变量名。

  编码习惯:异常检查、边界处理。

4. 面试的过程中要注意自己沟通能力的展现,让面试官时刻明白你的意图。

 面试被要求写代码时,应该主动写出合理的测试用例(Testcase)。

5. 如何练习算法

  资源:leetcode 、 cc150 等刷题网站。

最新文章

  1. git教程
  2. php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
  3. Windows程序设再读笔记00-序言
  4. 100114D
  5. (0)图像处理opengl 写在前面的话
  6. 转: app端数据库(性能高) realm (ios, android 均支持)
  7. -_-#【JS】isFinite
  8. Android 匿名共享内存Java接口分析
  9. IO库 8.4
  10. [INS-30060]:Check for group existence failed
  11. POJ - 3278 Catch That Cow bfs 线性
  12. 手机端图像编辑上传-cropper
  13. 【转载】 996,谁的ICU?
  14. 将之前的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。
  15. html5 canvas 径向渐变
  16. url提交参数类
  17. 两个有序单链表合并成一个有序单链表的java实现
  18. 前端学习之JavaScript
  19. jquery插件制作,下拉菜单
  20. 17、JAVA多线程和并发基础面试问答

热门文章

  1. POJ-1958 Strange Towers of Hanoi(线性动规)
  2. TOP100summit 2017:【案例分享】魅族持续交付平台建设实践
  3. HDU 2993 - MAX Average Problem - [斜率DP]
  4. 初次安装hive-2.1.0启动报错问题解决方法
  5. tun笔记
  6. 《MYSQL必知必会》
  7. MYSQL 命令行显示乱码 解决方案
  8. Charles 使用(拦截与修改)
  9. IE8 select 动态下拉遇到的问题
  10. 打造自己的 JavaScript 武器库