博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
某互联网公司20分钟笔试题
阅读量:6079 次
发布时间:2019-06-20

本文共 1612 字,大约阅读时间需要 5 分钟。

  hot3.png

某互联网公司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 6int 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;}

总结

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

转载于:https://my.oschina.net/mjRao/blog/666027

你可能感兴趣的文章
HTTP协议详解
查看>>
Hadoop生态圈
查看>>
以太网每秒可以传输多少个数据帧?
查看>>
使用RMAN进行备份
查看>>
IPSEC ××× ---野蛮模式与动态获得地址!
查看>>
Linux下Java调试方法
查看>>
究竟为什么开发者首选 iOS ?
查看>>
渲染图片
查看>>
vrrp hsrp在企业网中的应用
查看>>
关于js 的typeof运算符
查看>>
有趣的数(动态规划)
查看>>
OCX注册错误:请确保该二进制存储在指定的路径中
查看>>
linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数
查看>>
企业网站为什么要转型营销型网站
查看>>
CocoaPods + 自定义静态库 -> 多工程连编
查看>>
WAF产品
查看>>
我的友情链接
查看>>
为Dll重新构造Lib
查看>>
EXCEL如何知道今天是第几周
查看>>
经典JDBC DAOFactory类实现
查看>>