由买买提看人间百态

topics

全部话题 - 话题: memmove
1 2 下页 末页 (共2页)
X****r
发帖数: 3557
1
我已经说了啊,就是让被试者实现memmove啊。
我自然会把memmove的man page贴给被试者,所以用没用过没有关系。
y****e
发帖数: 23939
2
I have a program which calls memset and memmove. My system is Fedora 14 x86_
64 and g++ 4.5.1. I realize now when the float data set over 8GB limit,
these two functions create segfault. The
backtrace of call stack shows it crash at:
# in __memmove_ssse3 () from /lib64/libc.so.6
The program runs OK when data set size is under 8GB.
Anybody knows why? I googled online but can't find any place talking about
the size limit of memset and memmove.
y****e
发帖数: 23939
3
问题解决了,是跟memmove没有关系,问题出在上游。跟int的limit有关,int最大到2G
,8GB的float的index已经超过了2G,我把int改成size_t就解决了。以前程序一直是在
32位下编写的,没有处理过这么大的内存块,所以问题一直没有暴露。
如果是memset和memmove有问题的话,应该影响面很大的,网上应该能搜出很多来的。
X****r
发帖数: 3557
4
就是让你实现memmove啊。
H*M
发帖数: 1268
5
详细说说是什么题吧
要是memmove不知道是啥呢
根本没用过
M**u
发帖数: 10158
6
感觉这个简单的事先就可以
void *memmove (void *dst_, const void *src_, size_t size)
{
unsigned char *dst = dst_;
const unsigned char *src = src_;
ASSERT (dst != NULL || size == 0);
ASSERT (src != NULL || size == 0);
if (dst < src)
{
while (size-- > 0)
*dst++ = *src++;
}
else {
dst += size;
src += size;
while (size-- > 0)
*--dst = *--sr... 阅读全帖
s**x
发帖数: 7506
7
来自主题: JobHunting版 - LinkedIn 面经
http://stuff.mit.edu/afs/sipb/contrib/linux/arch/microblaze/lib
/*
* Copyright (C) 2008-2009 Michal Simek
* Copyright (C) 2008-2009 PetaLogix
* Copyright (C) 2007 John Williams
*
* Reasonably optimised generic C-code for memcpy on Microblaze
* This is generic C code to do efficient, alignment-aware memmove.
*
* It is based on demo code originally Copyright 2001 by Intel Corp, taken
from
* http://www.embedded.com/showArticle.jhtml?articleID=19205567
*
* Attempts were made, unsu... 阅读全帖
K*****n
发帖数: 65
8
来自主题: JobHunting版 - 问个简单的GooG题目
For Problem 2, copied from Visual Studio
;memmove - Copy source buffer to destination buffer
;
;Purpose:
; memmove() copies a source memory buffer to a destination memory
buffer.
; This routine recognize overlapping buffers to avoid propogation.
; For cases where propogation is not a problem, memcpy() can be used.
;
; Algorithm:
;
; void * memmove(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; if (dst <= src || dst >=
j*****y
发帖数: 1071
9
来自主题: JobHunting版 - 小面经
void * memmove(void * dest, void * src, unsigned int n)
{
if(src == dest)
{
return dest;
}
if(src + n <= dest || dest + n <= src)
{
memcpy(dest, src, n);
return dest;
}
if(src < dest)
{
memmove(dest + (dest - src), dest, n - (dest - src));
memcpy(dest, src, dest - src);
}
else
{
memcpy(dest, src, src - dest);
... 阅读全帖
P*******y
发帖数: 168
10
来自主题: JobHunting版 - G家面经
不知道为啥,被内推后,竟然不是general hiring,面的是platform的码工,他家的
platform是做很底层的网络方面的,最后面得很不爽,悲剧了。
电面:
一个三哥,先问了我project问题,然后说我的背景是网络的,就问我一个网络底层的
问题,题目都没听懂。直接给他说从哪里看出我的背景是网络的,我说我是做系统的,
网络的不太懂。然后就让我coding。先画了一个BST,问怎么定义BST,然后问怎么处理
有等号的情况。并问为什么那么处理。然后就coding写一个验证valid BST,经典题。
第二题是2D sorted array的search。用了binary search的方法,然后三哥好像不知道
这种方法,跟他解释老半天后,coding完跟我探讨复杂度。第二天通知可以on site了
Onsite四轮,上午两轮,下午两轮
第一轮:一个网络界的一个资深元老,感觉五十岁有了。先问我网络知识性的问题,懂
的回答了,不懂的直接说不懂了。然后问memcpy是怎么实现的。也让我写code实现了一
下。然后问memmove和memcpy有啥区别,再让我实现memmove。所有... 阅读全帖
m*****f
发帖数: 1243
11
按理说, memcopy不用考虑overlap的情况的, memmove才需要
w*********l
发帖数: 1337
12
其实吧,memcpy是不应该handle overlap的。如果有overlap应该用memmove.
H*M
发帖数: 1268
13
来自主题: JobHunting版 - 谁给个方向关于low level implementation
经常见到要求实现
malloc, memcpy. memmove等函数,
谁能不能给个方向哪本书,或者哪个link有讲这些的?
谢谢了
...
S**Y
发帖数: 136
14
来自主题: JobHunting版 - 问个简单的GooG题目
1. 就是什么时候用O(n^2)的算法而不是用O(nlgn)的算法,比如用在数目少的时候会用i
nsertion sort,而不是用merge sort之类的?
2. 写个memmove function,这个谁能给个bug free的code,除了要考虑前后可能的overl
ap之外,还要考虑其他的么?谢谢
u**s
发帖数: 50
15
来自主题: JobHunting版 - 请问strcpy()和memcpy()的写法问题
1. I think saving "ptrSrc" in memcpy has no special purpose. Someone just
uses one extra local variable.
2. In real system, those codes (strcpy & memcpy & ...) usually will never
get chance to run because there are much faster arch-dependent assembly
versions for all those functions. Search memcpy/strcpy/memmove in linux
kernel tree/glibc you will find the real codes.
And, I roughly remember in the comments at the beginning of those codes
Linus wrote something like, "The following implementati
g*******s
发帖数: 490
16
感想,居然第一题就考到了goto。。我靠。。
有两三道题程序实在是太长,一堆指针+loop,看不清楚,不过这些程序基本是找错。。只能看答案猜了
最好两台电脑,一台要打程序,查资料操作不过来,如果有帮手就更好了
1. variable definition 和 declaration的 区别
2. 怎么是最portable的方法操作integer最高位的那个byte,比如设1
3. vfprintf考到了
4. char *x;
x="abcd"
请问这个操作的意义,合法不合法?空间是怎么allocate
5. freebsd某个头文件的一个macro
#if defined xxxx
#define _p(xxx) (xxx)
#else
#define _p(xxx) ()
#end
what does this macro for
6. memcpy 在某个iso xxx标准中的标准declaration是
7. memmve
8.哪个方法是一个c program必须的方法,main?
9. c提供了哪个方法获取 any file的 size
10. file * fp ... 阅读全帖
l*****g
发帖数: 685
17
来自主题: JobHunting版 - MS的 on site面试,求bless
void shiftChars(char * str, size_t len)
{
if (!str || len < 3) return;
char lastChar = *(str + (len - 1));
memmove(str+2, str+1, len - 2);
*(str+1) = lastChar;
shiftChars(str + 2, len-2);
}
a***r
发帖数: 93
18
这题如果用DP来做,哪位给分析一下什么是subproblem?
【 以下文字转载自 Programming 讨论区 】
发信人: minisand (老婆是A+海博), 信区: Programming
标 题: 请教一个字符串比较排序的问题
发信站: BBS 未名空间站 (Mon Nov 9 16:35:46 2009, 美东)
之前有人贴出了常见的那个求Maximum repetitive substring的代码,如下:
void MaxDuplicatedSubstring(char *input, char *result)
{
int length = strlen(input);
char **substrings = new char**[length];
for (int i=0; i < length; i++)
substrings[i] = input + i;
qsort(substrings, length, sizeof(char*), (int (*)(const void*, const void*
))strcmp);
... 阅读全帖
h********g
发帖数: 496
19
来自主题: JobHunting版 - 请教一个问题
需要就memmove?
不过没有要求考虑重叠,倒是考虑了效率问题。如果len很长怎么办?
h**6
发帖数: 4160
20
来自主题: JobHunting版 - 小面经
今天考别人的题。
用memcpy实现memmove
y*******g
发帖数: 6599
21
来自主题: JobHunting版 - 小面经
没明白,考点是什么?
memmove allow overlap? 好像也联系不上
k***x
发帖数: 6799
22
来自主题: JobHunting版 - 小面经
trick就是考虑memmove指向的两个内存块的若干中可能重叠情况?
y*******g
发帖数: 6599
23
来自主题: JobHunting版 - 小面经
无所谓吧,反正memmove可以overlap,而且copy count个就好了,不check null
按han6的解释,我觉得是纯coding warm up的题目
j*****y
发帖数: 1071
24
来自主题: JobHunting版 - 小面经
memmove(dest, dest - 1, 10)
需要 call memcpy 10 次吧, 这里假定内存的布局中 dest - 1 在 dest的
左边
t********e
发帖数: 1169
25
来自主题: JobHunting版 - m家面经+求分析
很幸运,全程没有遇到一个烙印,上周二onsite,现在还没回复,求分析。 fresh
phd, 手头有些offer.没有签任何协定,说题目应该没问题吧。。
Update: Onsite居然拖了一周回复,磕磕盼盼总算拿下了,具体package还没谈
——————————————————————————————————————
0.店面:台湾人 rsde还是applied researcher来着
0a. 一个数组里面找中位数, 复杂度
0b. 如果有m台机器,每个机器有n个数据,怎么找nm个数据的中位数,复杂度
就是个quickselect, 后面一问没怎么答好,我居然想到的是每台机器先排序,再找中
位数。。。
应该是答得很不好,在店面后两周才通知onsite.....还以为挂了呢
——————————————————————————————————————
上周2 onsite, 9:30am开始,先跟hr小聊了一下,然后等10:30的lunch interview
1. 老美,典型geek, 97年就到西雅图上班了,级别不知。 先做题目再到公司cafe吃饭
,吃饭时看窗外,从来不知怎... 阅读全帖
g*******s
发帖数: 2963
26
来自主题: JobHunting版 - G家面经
写memmove记得是nvidia这种用C的公司喜欢问的好像
r**h
发帖数: 1288
27
来自主题: JobHunting版 - 一点码工求职经验总结,回报本版
个人总结的一些C/C++问题:
C Tutorial:
http://www.cprogramming.com/tutorial.html
C问题集:
http://www.indiabix.com/technical/c/
http://www.parashift.com/c++-faq-lite/index.html
1) 为啥要用c++;
2) encapsulate, polymorphism ,inheritance 的概念;
encapsulate: Hide details of implementation
polymorphism : has multiple forms
inheritance: is-a relationship
3)class的概念
type of object
4)default constructor是啥样的;
without parameters
5) 写copy  constructor要注意啥
parameter must be reference : Node(const... 阅读全帖
p****o
发帖数: 46
28
should be
memcpy(extra, extra + t, extra_len - t);
or in a safer way:
memmove(extra, extra + t, extra_len - t);
d*k
发帖数: 207
29
Yeah, that's right. I was too tired last night. Thanks for the chance of
reviewing memcpy and memmove!
d*k
发帖数: 207
30
来自主题: JobHunting版 - 请教一个fb面试问题
//欢迎拍砖,共同提高。
char* readLine(char* ret) {
vector store;
static char buf[SIZE];
static buf_size = 0;

while (true) {
if (buf_size == 0) {
buf_size = read(buf, SIZE);
}
int last = 0;
for (last = 0; last < buf_size && buf[last] != '\n'; ++last);
copy(buf, buf + last, back_inserter(store));
if (last < buf_size) {
buf_size = buf_size - (last + 1);
memmove(buf, buf + last + 1, buf_size)
... 阅读全帖
o**8
发帖数: 109
31
来自主题: JobHunting版 - 请教一个fb面试问题
似乎有bug:
假如SIZE=10,在第15个字符出现n. 第一行读出来返回没问题,但剩余的5个字符
memmove到前面还没推进store,就被第二次ReadLine开始的read冲掉了。
另外好像还有个off by 1 bug
n****e
发帖数: 678
32
来自主题: JobHunting版 - LinkedIn 面经
void memmov(void* src, void* dst, int numBytes) {
}
两位国人大哥一起面,自己对void pointer的概念有点忘了,这题也做得不好。
多谢国人大哥高抬贵手,让我过了。
bless一下自己后面的on-site。
n****e
发帖数: 678
33
来自主题: JobHunting版 - LinkedIn 面经
就是implement memmov 这个function。
有做alignment之类的优化。
没有要求thread-safe。
d**********x
发帖数: 4083
34
来自主题: JobHunting版 - LinkedIn 面经
you are right.
memmove handles this, while memcopy and strcpy don't.
s**x
发帖数: 7506
35
来自主题: JobHunting版 - LinkedIn 面经
void *memmove(void *src, void *dst, size_t n)
{
if (n == 0 || src == dst) return;
char *cs = src;
char *cd = dst;
if (cd < cs) {
while (n--) {
*cd = *cs;
cd ++;
cs ++;
}
} else {
cd += n;
cs += n;
while (n--) {
*cd = *cs;
cd --;
cs --;
}
}
return dst;
}
J****3
发帖数: 427
36
攒人品
From MITBBS:
1. 给一个二叉树 返回镜像 (Binary Tree Mirror)
2. Implement a thread-safe blocking queue.
3. 一个嵌套Map, 就是一个HashMap, 它的value可以是一个element也可以是另外一个
嵌套map或是空的map. 实现一个iterator来遍历这个map里面的所有element。 就是类
似树遍历一样的方法
4. 给你一个数组,其中一个数出现了大于N/3次,N是数组长度。怎么找?我先说
HASHTABLE,他问我还有没有什么办法。想来想去只能SORT. 他就问下一题了。不知道
还有没有什么最优解。我觉得那种针对一个数字出现过大于N/2的VOTING ALGORITHM
好象不是很合适吧。
5.后缀波兰表达式STRING转换为中缀表达式的STRING。
这题本来很简单,但我可能算错了。纠结的地方是a,b,+,c,/
到底是 (c/(a+b)) 还是 ((a+b)/c)
6. Implement pow(double a, int b)

7. 接着给Amazon的favori... 阅读全帖
f******s
发帖数: 25
37
来自主题: JobHunting版 - 狗狗家面筋
memcpy 不解决地址overlap的情况, memmove才会考虑
生成迷宫,好像design pattern里面有例子,不过挺复杂的。。。
x****1
发帖数: 118
38
来自主题: JobHunting版 - FLAG干货:

递归
我当时也就想到这个解法。我觉得可以优化的是当找到最小元素,不用真的一个一个
swap,直接memMove或者Array.Copy会减少内存的占用
f******s
发帖数: 25
39
来自主题: JobHunting版 - 这样算不算被烙印黑了?
跟他说memcpy本来就不考虑重合情况 memmove才考虑
D******3
发帖数: 97
40
来自主题: JobHunting版 - 这样算不算被烙印黑了?
The memcpy() function copies n bytes from memory area src to memory area dst
. If dst and src overlap, behavior is undefined. Applications in which dst
and src might overlap should use memmove(3) instead.
i******r
发帖数: 793
41
来自主题: JobHunting版 - 这样算不算被烙印黑了?
您说对了,后来我发现memcpy根本不考虑重合情况
当时他一开始叫我写的是memcpy
后来也许发现自己的失误,又说其实是memmove
但是这时候面试都结束了
可见他黑我真是处心积虑的
w****a
发帖数: 710
42
来自主题: JobHunting版 - FB onsite 面经
顺便问一下,implement memcpy这题有让你优化么。或者followup下考虑overlap,再
实现个memmove?
c******3
发帖数: 6509
43
来自主题: JobHunting版 - 放c code求老师傅指教
看了半天题目,没看见不让用strlen啊,你还用strdup去分配内存来计算count
“without using a second string for temporary storage. ”,你以为char buf[
count]就不算string了?
最后的拷贝最狠,清空整个src[],然后做strcpy,难道不知道strcpy带结尾0赋值能力
?完全是多余的运算
本来一个简单strstr+memmove搞定的小程序,你自己看看用了多少字符串操作,而且中
间src重来不移动,每次循环都是从头扫描到尾部,不挂就没天理了...

发帖数: 1
44
来自主题: JobHunting版 - google seti onsite
1)memmove
serialize a list of strings, transmit as a long string, deserialize at
receiving end. all chars are valid in the string.
2) given a random generator, and a list of target numbers, return how many
times generator is called to hit all target numbers.
3) implement rsync
4) find first available time slot given calendars of two persons.
5) what do you consider when implementing a file downloader ... so ambiguous
.
S*A
发帖数: 7142
45
来自主题: Linux版 - glibc和kernel的兼容性问题
google 了一下 memcpy, kernel, lkml.
没有找到什么有用的。 唯一一个接近的是 memcpy 和 memmove
要区分开。但是这个 memcpy 完全是 user space 自己的事情啊。
跟 kernel 没有什么关系啊,还是非常不解。
S*A
发帖数: 7142
46
来自主题: Linux版 - glibc和kernel的兼容性问题
啊多谢 Link。这个就是我说的 memcpy vs memmove 的东西。
这个跟 kernel 完全没有关系,就是 glibc 和 flash 之间的
问题。完全是 user space, 不能因为 Linus 跳进来讨论就自
动变成 kernel 问题了。
而且 Linus 一再强调尽量保持 binary interface 的重要性。
这个和 kernel 不应该 break glibc 里讨论的原因是完全
一致的。非常典型的 Linus 的一贯立场啊。所以我相信破坏
glibc 兼容性的改动过不了 Linus 那一关的。
https://bugzilla.redhat.com/show_bug.cgi?id=638477#c222
什么时候变成 kernel vs glibc 的兼容性问题了?
S*A
发帖数: 7142
47
来自主题: Linux版 - glibc和kernel的兼容性问题
再看看这个 bug, 严重同意 Linus 的观点。
这就是为什么大家很信任 Linus 的原因,因为他比较敏锐指出
问题的实质,提出比较实际的解决方案,不同于传统的习惯思维。
一般人骂骂 flash 就完了。Linus 要求 glibc 吧 memcpy
实现成 memmove 的确是更加完美的方案。
Linus is always right. 又一次成功的体现。
S*A
发帖数: 7142
48
来自主题: Linux版 - glibc和kernel的兼容性问题
这个我还是完全同意 Linus 教主。
标准是人订的,最终是为人服务的。
memcpy 用 memmove 实现完全没有违反任何标准。
用损害用户使用来片面刻板强制标准是不可取的。
大不了给个 debug mode Warning 那些不标准行为。
直接 corrupt 是完全不必要的。
m******d
发帖数: 414
49
来自主题: Programming版 - 请教一个字符串比较排序的问题
之前有人贴出了常见的那个求Maximum repetitive substring的代码,如下:
void MaxDuplicatedSubstring(char *input, char *result)
{
int length = strlen(input);
char **substrings = new char**[length];
for (int i=0; i < length; i++)
substrings[i] = input + i;
qsort(substrings, length, sizeof(char*), (int (*)(const void*, const void*
))strcmp);
int max = 0;
int index = -1;
for (int i=0; i < length - 1; i++)
{
int c = 0;
while (substrings[i][c] && substrings[i+1][c] && substrings[i][c] ==
substrin... 阅读全帖
X****r
发帖数: 3557
50
太好用了,对于电话面试来说区分度正好,很少有人能一遍做对并回答出相关的问题,
但绝大多数人都能做出一点,再提示两下也大都能完成。
还有什么类似的面试题没有?我也不能什么人都问这一道啊。
1 2 下页 末页 (共2页)