文档章节

某互联网公司20分钟笔试题

lake_r
 lake_r
发布于 2016/04/25 18:34
字数 703
阅读 63
收藏 1

某互联网公司C++ 面试

1 分析C++程序运行内存分布

2 写一个函数,输入n,求斐波那契数列的第N项 0 1 1 2 3 5 ......

3 杨辉三角实现


code部分没有在纸上写出来,知道思路,但是就是不知道如何code,不知道是不是脑子抽筋了!

第一题:

我们先说一下程序的组成,典型的可执行文件分为两部分:

  • 代码段(code),由机器指令组成,该部分是不可改的,编译之后就不在改变,放置在文本段(.text)
  • 数据段(data),它由一下几部分组:
    • 常量(constant),通常放置在只读 read-only的文本段(.text)
    • 静态数据(static data),初始化的放置在数据段(.data);未初始化的放置在(.bss, BSS段的变量只有名称和大小缺没有值)
    • 动态数据(dynamic data),这些数据存储在堆(heap)或栈(stack)

源程序编译后链接到一个以0地址为始地址的线性或者多维虚拟地址空间。而且每一个进程都拥有这样一个空间,每个指令和数据都在这个虚拟地址空间拥有确定的地址,把这个地址称为虚拟地址。将进程中的目标代码、数据等的虚拟地址组成的虚拟空间称为虚拟存储器。典型的虚拟存储器中有类似布局:

  • Text Segment(.text) 代码段
  • Initialized Data Segment(.data) 初始化数据段
  • Uninitialized Data Segment(.bss) 未初始化数据段
  • The Stack 栈
  • The Heap 堆

如下图所示: memory layout

第二题

第二题是C语言基础课本上的例子,可能是面试经历太少,忽略了基础,找到了规律,但是就是不知道如何在纸上codeing出来.........

  • 递归
int fib(int n)
{
	if(n == 0 || n == 1)
		return n;
	return fib(n-1) + fib(n-2)
}
  • 非递归
int fib(int n)
{
  if(n < 2)
  {
  	return n;
  }
  int fib1 = 0;
  int fib2 = 1;
  int fibn = 0'
  int i = 0;
  for(i = 2; i <= n; i++)
  {
  	fibn = fib1 + fib2;
    fib1 = fib2;
    fib2 = fibn;
  }
  return fibn;
}

测试程序

int main(int argc,char **argv)
{
	int n = 6;
	int i = 0;
	for( ; i < n ; i++)
	{
		printf("%d\t", fib(i));
	}
	printf("\n");
	return 0;
}

第三题

#define N 6
int main(int argc,char **argv)
{
	int i,j;
	int a[N][N] = {0};
	for(i = 0; i < N ; i++)
	{
		a[i][0] = 1;
	}
	for(i = 1; i < N ; i++)
	{
		for(j = 1; j <= i; j++)
		{
			a[i][j] = a[i-1][j-1] + a[i-1][j];
		}
	}
	for(i = 0; i < N; i++)
	{
		/*for(j = 0; j < N - i ; j++)
			printf(" ");*/
		for(j = 0; j <= i; j++)
		{
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

总结

每一次请假面试,自己内心都是崩溃的。还是自己基础不够牢固!接下来,多看面试题,多看小算法~

© 著作权归作者所有

共有 人打赏支持
lake_r
粉丝 82
博文 155
码字总数 72374
作品 0
朝阳
后端工程师
私信 提问
双非也可以有好归宿

废这么大劲,不能白写了,再发一次。 目标基本实现。 工作终于尘埃落定,所经历的一切也总算有了回报。 今天请教我一个比较尊敬的本科老师,本科老师说了一句话好经典,说现在这个社会,真的...

牛客网
2018/02/24
0
0
2018年互联网技术岗(数据分析)暑期实习面试经验

此经验帖适合想找互联网相关工作的人,如数据分析、算法工程师、数据挖掘工程师等。或者是想进入BAT等互联网公司的人,我会介绍他们暑期实习招聘流程及笔面试经验等,暑期实习往往是有转正机...

你的社交帐号昵
2018/05/22
0
0
寒冬之下,写给2016届校招生的一封信

秋天的凉爽带来了一丝清凉,秋高气爽的天气,让人无时无刻不在想念秋的味道。万物生长,世轮回,本来一切都按照既定的规则正常运转着。然而,在互联网+如荼如火的中国,在大众创业,万众创新...

pmcaff2008
2017/12/13
0
0
新书出版 |《数据库程序员面试笔试真题库》

新书出版 《数据库程序员面试笔试真题库》 新书出版 《数据库程序员面试笔试真题库》 书名: 数据库程序员面试笔试真题库 作者:李华荣 定价: 69.00元 出版社名称: 机械工业出版社 出版时间:...

小麦苗
2018/08/07
0
0
一个IT农民工分享互联网巨头公司面试流程

IT是一个人才日益紧缺的行业,2012年的人才需求比2011年上涨了将近2.3倍。随着人才的紧缺,IT业的薪水也是水涨船高。互联网巨头们对人才的争夺,更是日益激烈化。 对于从事IT的职场人士,绝大...

兔bug
2012/11/27
8.8K
57

没有更多内容

加载失败,请刷新页面

加载更多

【行为型】- 中介者模式

中介者模式: 调停者模式 定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,可独立地改变他们之间的交互。 角色 抽象中介者:定义好同...

ZeroneLove
13分钟前
0
0
Harbor快速部署到Kubernetes集群及登录问题解决

Harbor(https://goharbor.io)是一个功能强大的容器镜像管理和服务系统,用于提供专有容器镜像服务。随着云原生架构的广泛使用,原来由VMWare开发的Harbor也加入了云原生基金会(参考《Har...

openthings
33分钟前
1
0
MQ学习-基本概念区分

消息队列 Kafka 涉及的专有名词和术语进行定义和解释,方便您更好地理解相关概念并使用该产品。 Broker: 消息队列 Kafka 集群包含一个或多个消息处理服务器,该服务器被称为 Broker。 Topi...

os1cheng
47分钟前
3
0
腾讯怒怼:靠红包骗用户下载怎么可以叫产品

近日,社交圈出现了大动荡,三款新推出的社交软件全部被微信封杀,对此,腾讯公关总监在回应外界对于1月15日三款社交新产品撼动微信的消息,他呼吁媒体在批评的同时应当尊重事实,“我们尊重...

linux-tao
今天
3
0
面试必考-数据优化

sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。 为了获得稳定的执行性能,SQL语句越简单越好...

瑞查德-Jack
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部