Redian新闻
>
习近平国际关系学院演讲 彭丽媛听众席落座 (转载)
avatar
习近平国际关系学院演讲 彭丽媛听众席落座 (转载)# Joke - 肚皮舞运动
c*y
1
1.给一个uint64_t的a和一个uint64_t的b,找到最小的一个数(比数a大),而且是b的
整数倍。注b一定大于0,而且是2的整数倍,例如2,4,8,16,32等等。a是任意。
例如,
如果 a = 4, b = 4, 那么返回4
a = 5, b = 8, 返回8
a = 9, b = 8, 返回16
2.在键入"ping www.google.com"后,ping的过程是如何发生的,越详细越好。
3.给一个随机的地址0x42EF86CA,C程序里对这个地址做了一个dereference,导致程序
crash,请解释这个derefence为何会导致程序crash。
avatar
u*w
2
【 以下文字转载自 Military 讨论区 】
发信人: usajjww (For the Lich King!), 信区: Military
标 题: 习近平国际关系学院演讲 彭丽媛听众席落座
发信站: BBS 未名空间站 (Sat Mar 23 13:12:25 2013, 美东)
【中国国家主席习近平23日在莫斯科国际关系学院发表重要演讲,阐述中国对当前国际
形势的看法、中国的外交方针和发展中俄关系的主张。
习近平说,一个国家的发展道路合不合适只有这个国家的人民最有发言权。
国家主席习近平正在莫斯科国际关系学院演讲,称合作发展共赢成为时代潮流,人类越
来越成为你中有我、我中有你的利益共同体。我们主张各国和各国人民共同享有尊严,
鞋子合不合脚穿着才知道,一个国家的发展道路,只有这个国家的人民才知道。
avatar
p*2
3
第一题binary search吧?
avatar
t*t
4
j point?
avatar
t*h
5
for no.3: does dereference always come with data type? if so then maybe data
is not interpretable. another possible is that address points to system
data? i know little about c.

【在 c**y 的大作中提到】
: 1.给一个uint64_t的a和一个uint64_t的b,找到最小的一个数(比数a大),而且是b的
: 整数倍。注b一定大于0,而且是2的整数倍,例如2,4,8,16,32等等。a是任意。
: 例如,
: 如果 a = 4, b = 4, 那么返回4
: a = 5, b = 8, 返回8
: a = 9, b = 8, 返回16
: 2.在键入"ping www.google.com"后,ping的过程是如何发生的,越详细越好。
: 3.给一个随机的地址0x42EF86CA,C程序里对这个地址做了一个dereference,导致程序
: crash,请解释这个derefence为何会导致程序crash。

avatar
r*e
6
跟是不是interpretable没关系
dereference random pointer导致segmentation fault
进程会收到SIGSEGV,对应的signal handle就是core dump & terminate

data
是b的
程序

【在 t*********h 的大作中提到】
: for no.3: does dereference always come with data type? if so then maybe data
: is not interpretable. another possible is that address points to system
: data? i know little about c.

avatar
c*3
7
第一题: ((a -1) / b + 1) * b
avatar
l*8
8
第一题我感觉是这样:
((a-1)/b + 1) * b;
不过要注意一下overflow.

【在 p*****2 的大作中提到】
: 第一题binary search吧?
avatar
t*h
9
为什么会有seg fault?

【在 r*******e 的大作中提到】
: 跟是不是interpretable没关系
: dereference random pointer导致segmentation fault
: 进程会收到SIGSEGV,对应的signal handle就是core dump & terminate
:
: data
: 是b的
: 程序

avatar
r*e
10
page table记录了哪些memory page是分配给哪些process的
一个process企图access没有被分配的page或者分配给其他process的page
就会seg fault

【在 t*********h 的大作中提到】
: 为什么会有seg fault?
avatar
f*y
11
第一题没考虑overflow的做法
int high = (~b + 1) & a;
int low = (b - 1) & a;
if (low > 0) {
low = b;
}
return high + low;

【在 c**y 的大作中提到】
: 1.给一个uint64_t的a和一个uint64_t的b,找到最小的一个数(比数a大),而且是b的
: 整数倍。注b一定大于0,而且是2的整数倍,例如2,4,8,16,32等等。a是任意。
: 例如,
: 如果 a = 4, b = 4, 那么返回4
: a = 5, b = 8, 返回8
: a = 9, b = 8, 返回16
: 2.在键入"ping www.google.com"后,ping的过程是如何发生的,越详细越好。
: 3.给一个随机的地址0x42EF86CA,C程序里对这个地址做了一个dereference,导致程序
: crash,请解释这个derefence为何会导致程序crash。

avatar
s*c
12
这是virtual memory address, 没法访问其他process的address space的
segfault 是因为企图访问被禁止访问的memory segment

【在 r*******e 的大作中提到】
: page table记录了哪些memory page是分配给哪些process的
: 一个process企图access没有被分配的page或者分配给其他process的page
: 就会seg fault

avatar
s*n
13
应该是high + b吧

【在 f********y 的大作中提到】
: 第一题没考虑overflow的做法
: int high = (~b + 1) & a;
: int low = (b - 1) & a;
: if (low > 0) {
: low = b;
: }
: return high + low;

avatar
s*n
14
跑个例子:
a = 00001110
b = 00000100
~b+1 = 11111100
c = (~b + 1) & a = 00001100
那么c比a小00000010
加上一个b是最小的b被整数
不过大牛的第一个式子很好。虽然我想到这题是x&(x-1)知识的变体,但是想第一个式
子还是花了10多分钟,多年不写c code, 老了,这题考我就挂了。看上去楼主面的是
网络组,都是很底层的东西。

【在 s*****n 的大作中提到】
: 应该是high + b吧
avatar
r*e
15
你说的没错
但是seg fault是个legacy concept
现在系统的memory protection是以page为单位的
invalid access to pages 也是产生SIGSEGV,但实际上是page fault的一种
只不过还是沿用原来的老叫法,叫seg fault

【在 s******c 的大作中提到】
: 这是virtual memory address, 没法访问其他process的address space的
: segfault 是因为企图访问被禁止访问的memory segment

avatar
p*2
16

process里不是应该是virtual memory space吗?怎么能访问到其他process的page?

【在 r*******e 的大作中提到】
: page table记录了哪些memory page是分配给哪些process的
: 一个process企图access没有被分配的page或者分配给其他process的page
: 就会seg fault

avatar
p*2
17

大牛说的是

【在 l*********8 的大作中提到】
: 第一题我感觉是这样:
: ((a-1)/b + 1) * b;
: 不过要注意一下overflow.

avatar
S*I
18
越界访问的时候对任何page提出访问请求都是有可能的。

【在 p*****2 的大作中提到】
:
: 大牛说的是

avatar
p*2
19

什么算越界访问呢?我记得windows上process不会越界到其他process的memory space
呀。因为都是virtual的。

【在 S**I 的大作中提到】
: 越界访问的时候对任何page提出访问请求都是有可能的。
avatar
s*k
20
比如user level的访问kernel?还有就是指向data的pointer访问到code或者const之类
的?

space

【在 p*****2 的大作中提到】
:
: 什么算越界访问呢?我记得windows上process不会越界到其他process的memory space
: 呀。因为都是virtual的。

avatar
q*r
21
可以解释一下吗?
a = 10, b = 3 结果好像不对。

【在 f********y 的大作中提到】
: 第一题没考虑overflow的做法
: int high = (~b + 1) & a;
: int low = (b - 1) & a;
: if (low > 0) {
: low = b;
: }
: return high + low;

avatar
p*2
22

嗯。

【在 s********k 的大作中提到】
: 比如user level的访问kernel?还有就是指向data的pointer访问到code或者const之类
: 的?
:
: space

avatar
d*n
23
第一题可运行C# code,题目给出的test cases都过
不过我觉得我理解有误,因为b是2的整数倍这条信息没有用到
public static Int64 GetNumber(Int64 a, Int64 b)
{
if (a <= b) return b;
Int64 rem = b-a%b;
if((Int64.MaxValue - rem) < a)
{
throw new ArgumentOutOfRangeException();
}
return a + rem;
}
第三题在windows叫access violation。segmentation fault应该是unix的概念而且很
老了。
avatar
w*y
24
没看懂第一题想考什么//汗
能不能详细解释一下啊
avatar
p*2
25

嗯。AV

【在 d***n 的大作中提到】
: 第一题可运行C# code,题目给出的test cases都过
: 不过我觉得我理解有误,因为b是2的整数倍这条信息没有用到
: public static Int64 GetNumber(Int64 a, Int64 b)
: {
: if (a <= b) return b;
: Int64 rem = b-a%b;
: if((Int64.MaxValue - rem) < a)
: {
: throw new ArgumentOutOfRangeException();
: }

avatar
s*o
26
第一题不能左移b,然后和a比大小?
c = b;
while (cif (c >= 0x8000000000000000) return 0;
c = c<<1;
return c;
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。