免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lostiger
打印 上一主题 下一主题

[C++] 问几个C的面试题? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-01-22 16:23 |只看该作者
2.
编译器不知道foo会不使用i,因为i是全局变量,所以int i等价于 volatile int i;不能优化,而栈上的就很容易就优化了
两个都有局部性,cache都是命中的,但是即便是命中,cache和积存器还是相差很大的

论坛徽章:
0
12 [报告]
发表于 2008-01-22 16:26 |只看该作者
4。Hash表不一定解决问题,最差情况下,第i次插入元素要探测i-1次,总次数∑(i-1)从而复杂度O(N*N)

论坛徽章:
0
13 [报告]
发表于 2008-01-22 16:28 |只看该作者
3.实模式下所有进程同一个线性地址空间,一个进程可能破坏整个操作系统。保护模式通过虚拟地址空间来做到内存保护。

论坛徽章:
0
14 [报告]
发表于 2008-01-22 16:31 |只看该作者
原帖由 flw2 于 2008-1-22 16:23 发表
2.
编译器不知道foo会不使用i,因为i是全局变量,所以int i等价于 volatile int i;不能优化,而栈上的就很容易就优化了
两个都有局部性,cache都是命中的,但是即便是命中,cache和积存器还是相差很大的


上面加颜色那句话能给一下出处吗?

论坛徽章:
0
15 [报告]
发表于 2008-01-22 16:32 |只看该作者
原帖由 flw2 于 2008-1-22 16:23 发表
2.
编译器不知道foo会不使用i,因为i是全局变量,所以int i等价于 volatile int i;不能优化,而栈上的就很容易就优化了
两个都有局部性,cache都是命中的,但是即便是命中,cache和积存器还是相差很大的


谢谢 这个可以说服我!


关于C函数调用中参数入栈的问题,前面(以sunyanzi做头像的哪位)网友给的贴太长了,我想不必搞那么复杂
只要搞清楚函数调用时,各种参数的位置就好了!
比如说,调用函数 int foo(int a, int b)时,
入栈的顺序是什么? 是否这样:EBP ESP 入栈, 然后返回地址入栈,然后参数入栈?(假设我们在x86体系下,栈向低地址生长的)

网上哪里可有调用函数时,内存的分布图看看,若有的话,比文字描述清楚多了

我记得《深入理解计算机系统》上讲的很清楚,可惜我很久不看 书也不见了

论坛徽章:
0
16 [报告]
发表于 2008-01-22 16:42 |只看该作者
原帖由 scutan 于 2008-1-22 16:31 发表


上面加颜色那句话能给一下出处吗?

具体哪这么说,没看到,C参考手册好像有吧,不过比较难懂,标准应该描述了这种情况不能优化,不能优化其实就是volatile(当前)

论坛徽章:
0
17 [报告]
发表于 2008-01-22 16:48 |只看该作者
原帖由 yovn 于 2008-1-22 16:26 发表
4。Hash表不一定解决问题,最差情况下,第i次插入元素要探测i-1次,总次数∑(i-1)从而复杂度O(N*N)

遍历数组,因为数组中只有两个是相同的,所以哈希出来的数值基本是不一样的(只有那两个是一样的),当访问数组中一个元素的时候就去看看哈希表中是否已经有该元素了,如果有了就找出来了。
上述是在不考虑哈希冲突的情况下的。

论坛徽章:
0
18 [报告]
发表于 2008-01-22 16:50 |只看该作者
找了一个,没有说ebp的

       

     ------------
    |    ...      |--esp
     ------------
main的时候如上

fun1(arg1,arg2);
     ------------
    |    ...      |
    ------------
    |    arg2    |
    ------------
    |    arg1    |
    ------------
    |    retaddr |<-----------ESP_fun1_caller
    ------------
fun1中调用fun2
fun2(a1,a2);

    ------------
    |    ...      |
    ------------
    |    arg2    |
    ------------
    |    arg1    |
    ------------
    |ret_fun1_call|
    ------------
    |    a2     |
    ------------
    |    a1     |
    ------------
    |   ret_fun1 |--esp
    ------------
fun2调用printf(“str: %s\n”,str);
    ------------
    |    ...      |
    ------------
    |    arg2    |
    ------------
    |    arg1    |
    ------------
    |ret_fun1_call|
    ------------
    |    a2     |
    ------------
    |    a1     |
    ------------
    |   ret_fun1 |
    ------------
    |    str     |--------这一块现在是一个参数,可能有多个
    ------------
    |    fmt     |--string的地址
    ------------
    |   retfun2 |
    ------------
printf
它知道fmt在哪,发现%s,所以它知道str参数在fmt上面,如果还有%d它知道参数在str上面(当前没列)

论坛徽章:
0
19 [报告]
发表于 2008-01-22 16:57 |只看该作者
原帖由 cugb_cat 于 2008-1-22 16:48 发表

遍历数组,因为数组中只有两个是相同的,所以哈希出来的数值基本是不一样的(只有那两个是一样的),当访问数组中一个元素的时候就去看看哈希表中是否已经有该元素了,如果有了就找出来了。
上述是在不考虑哈 ...

有这样的hash函数么?两个不一样的数字可以产生同一个hash值的。”基本“是不严谨的。

论坛徽章:
0
20 [报告]
发表于 2008-01-22 16:58 |只看该作者
原帖由 lostiger 于 2008-1-22 16:11 发表


能不能麻烦解释下问题1的答案,基础很差,只知道浮点数一般以IEEE的格式表达,如IEEE754格式
但是为什么上述不等式会造成问题呢? 不同相加顺序造成了精度损失吗?

请问问题2的依据是什么? 外部信号引 ...

浮点数运算满足交换律不满足结合律
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP