由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 贡献一个G家电面
相关主题
再问个简单的C问题问个碰到的c语言面试题
求看代码 Plus OneESRI QA面经
leetcode 的 triangle 一题 oj 怎么不过问个C的基本问题
问一个C的简单问题收到据信了,随便写点
谁知道这个问题的答案两个整数除法的问题太刁钻了吧
有个很简单的程序但是有segmentation fault是问啥Sqrt(X) 的time complexity 是多少呢
问一道精华帖的老题Java 问题,请教如何找出一个array里的duplicate segments? (转载)
问个bb的面试题又有两个同胞被假简历老印挤掉了
相关话题的讨论汇总
话题: int64话题: 第一话题: fault话题: return话题: 整数倍
进入JobHunting版参与讨论
1 (共1页)
c**y
发帖数: 172
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。
p*****2
发帖数: 21240
2
第一题binary search吧?
t*********h
发帖数: 941
3
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。

r*******e
发帖数: 7583
4
跟是不是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.

c******3
发帖数: 296
5
第一题: ((a -1) / b + 1) * b
l*********8
发帖数: 4642
6
第一题我感觉是这样:
((a-1)/b + 1) * b;
不过要注意一下overflow.

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

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

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

【在 t*********h 的大作中提到】
: 为什么会有seg fault?
f********y
发帖数: 120
9
第一题没考虑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。

s******c
发帖数: 1920
10
这是virtual memory address, 没法访问其他process的address space的
segfault 是因为企图访问被禁止访问的memory segment

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

相关主题
有个很简单的程序但是有segmentation fault是问啥问个碰到的c语言面试题
问一道精华帖的老题ESRI QA面经
问个bb的面试题问个C的基本问题
进入JobHunting版参与讨论
s*****n
发帖数: 5488
11
应该是high + b吧

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

s*****n
发帖数: 5488
12
跑个例子:
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吧
r*******e
发帖数: 7583
13
你说的没错
但是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

p*****2
发帖数: 21240
14

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

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

p*****2
发帖数: 21240
15

大牛说的是

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

S**I
发帖数: 15689
16
越界访问的时候对任何page提出访问请求都是有可能的。

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

p*****2
发帖数: 21240
17

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

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

space

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

q******r
发帖数: 9
19
可以解释一下吗?
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;

p*****2
发帖数: 21240
20

嗯。

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

相关主题
收到据信了,随便写点Java 问题,请教如何找出一个array里的duplicate segments? (转载)
两个整数除法的问题太刁钻了吧又有两个同胞被假简历老印挤掉了
Sqrt(X) 的time complexity 是多少呢g家店面面经,求bless
进入JobHunting版参与讨论
d***n
发帖数: 832
21
第一题可运行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的概念而且很
老了。
w***y
发帖数: 6251
22
没看懂第一题想考什么//汗
能不能详细解释一下啊
p*****2
发帖数: 21240
23

嗯。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();
: }

s******o
发帖数: 78
24
第一题不能左移b,然后和a比大小?
c = b;
while (c if (c >= 0x8000000000000000) return 0;
c = c<<1;
return c;
1 (共1页)
进入JobHunting版参与讨论
相关主题
又有两个同胞被假简历老印挤掉了谁知道这个问题的答案
g家店面面经,求bless有个很简单的程序但是有segmentation fault是问啥
*d++ = *s++问一道精华帖的老题
问一个C++ set和unordered_set iterator的问题问个bb的面试题
再问个简单的C问题问个碰到的c语言面试题
求看代码 Plus OneESRI QA面经
leetcode 的 triangle 一题 oj 怎么不过问个C的基本问题
问一个C的简单问题收到据信了,随便写点
相关话题的讨论汇总
话题: int64话题: 第一话题: fault话题: return话题: 整数倍