最近开始面试,记录一下面试经历。
应该是会给我发感谢信的吧~我也是真的菜。工作的原因其实也没时间准备,最近工作还是挺忙的。另外一个是在公司面试的,也挺紧张的。也是第一次面试,发挥不太好。
另外一个感觉深信服和我还真是有缘无份啊。实习的时候面试的第一家就是深信服,啥都不懂直接挂掉。时隔多年,深信服又是我第一个面试的公司~~~
自我介绍?
c++和c语言的区别
做的最难的项目是什么,遇到什么困难,怎么克服的?
周末一般干点什么?
说说对c++智能指针的理解。讲讲弱指针弱在哪里?
平时一般几点下班?
手撕代码一:实现memcpy
手撕代码二:给定两个水壶,一个可以装4升水,一个能装3升水,水壶上没有任何度量标记。有一水龙头可以用来往壶中灌水。问题是怎样在能装4升的水壶里面恰好只装2升水。
主要就是需要考虑一个内存重叠的情况。在dst>src,且两部分内存有重叠的时候,我们如果从前向后对元素进行拷贝,会出现问题。所以不管dst>=src有没有重叠的时候,我们都从前向后进行拷贝就可以了。

void my_memcpy(void* dest, void* src, size_t count) {
if (dest == src) {
return;
}
char* pDest = static_cast<char*>(dest);
char* pSrc = static_cast<char*>(src);
if (pDest < pSrc) {
for (size_t i = 0; i < count; ++i) {
*(pDest + i) = *(pSrc + i);
}
}
else {
for (size_t i = count; i > 0; --i) {
*(pDest + i - 1) = *(pSrc + i - 1);
}
}
}
具体题解直接看Leetcode365的解答吧,两种方法,一种遍历,一种数学方法。