博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  求职应试

摘要:memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);它们都是从src所指向的内存中复制count个字节到dst所指内存中,并返回dst的值。当源内存区域和目标内存区域无交叉时,两者的结果是一样的,但如果有交叉呢?先看下图:图的上半部分为源内存区域在目标内存区域右边,下半部分为源内存区域在目标区域左边,源内存区域和目标内存区域都 阅读全文

posted @ 2011-09-26 16:48 李大嘴 阅读(831) 评论(0) 推荐(0) 编辑

摘要:1、有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。View Code 1 using System; 2 using System.Linq; 3 using System.Collections.Generic; 4 namespace ConsoleApplication1 5 { 6 class Program 7 { 8 static Random Rand = new Random(); 9 10 static void Main(string[] args) 11 ... 阅读全文

posted @ 2011-09-16 16:04 李大嘴 阅读(2210) 评论(1) 推荐(1) 编辑

摘要:在网上看到此迭代解法,感觉很给力,理解它递归的语义。int zero(int i) { if(i < 5) { return 0; } return (i/5) + zero(i/5); } 阅读全文

posted @ 2011-09-14 20:17 李大嘴 阅读(297) 评论(0) 推荐(0) 编辑

摘要:假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些歌曲的2^30条URL,但每首歌的URL不超过2^10个。系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结果中。现在歌曲名和URL分别通过整型的SONG_ID和URL_ID唯一确定。对该系统有如下需求: 1) 通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表 2) 给定一个SONG_ID,为其添加一个新的URL_ID 3) 添加一个新的SONG_ID 4) 给定一个URL_ID,将其置为不可用 限制条件:内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个。 为获得最佳性能 阅读全文

posted @ 2011-09-13 19:49 李大嘴 阅读(656) 评论(0) 推荐(0) 编辑

摘要:以下多线程对int型变量x的操作,哪几个需要进行同步:( )A. x=y; B. x++; C. ++x; D. x=1;从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。01 x = y; 02 mov eax,dword ptr [y] 03 mov dword ptr [x],eax 04 05 x++; 06 mov eax,dword ptr [x] 07 add eax,1 08 mov dword ptr [x],eax 09 10 ++x; 11 mov eax,dword ptr [x] 12 add eax,1 13 mov dword ptr [ 阅读全文

posted @ 2011-09-13 10:08 李大嘴 阅读(7572) 评论(4) 推荐(5) 编辑

摘要:1、高位地址:栈(存放着局部变量和函数参数等数据),向下生长 (可读可写可执行)2、 堆(给动态分配内存是使用),向上生长 (可读可写可执行)3、 数据段(保存全局数据和静态数据) (可读可写不可执行)4、地位地址:代码段(保存代码) (可读可执行不可写)代码段就是存储程序文本的,所以有时候也叫做文本段,指令指针中的指令就是从这里取得。这个段一般是可以被共享的,比如你在Linux开了2个Vi来编辑文本,那么一般来说这两个Vi是共享一个代码段的,但是数据段不同(这点有点类似C++中类的不同对象共享相同成员函数)。 数据段是存储数据用的,还可以分成初始化为非零的数据区,BSS,和堆(Heap)三个 阅读全文

posted @ 2011-09-07 14:40 李大嘴 阅读(17800) 评论(1) 推荐(3) 编辑

摘要:设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时间由下图给出: P1:计算 60ms----------------I/O 80ms-----------------计算 20ms P2:计算 120ms--------------I/O 40ms-----------------计算 40ms P3:计算 40ms----------------I/O 80ms-----------------计算 40ms 调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C ) A、80ms B、120ms C、160ms D、200m 阅读全文

posted @ 2011-09-05 17:00 李大嘴 阅读(761) 评论(0) 推荐(0) 编辑

摘要:#include <iostream>using namespace std;typedef struct Node{ int value; Node *next;}Node;Node* CreateSingleLinkedList(int array[], int length){ Node *p = new Node; Node *head = NULL; Node *t = p; for (int i=0; i<length; i++) { Node *t = new Node; t->value = array[i]... 阅读全文

posted @ 2011-09-05 16:40 李大嘴 阅读(307) 评论(0) 推荐(0) 编辑

摘要:题目1:两个二进制数的异或结果两个二进制数异或结果 是 这两个二进制数差的绝对值,即表达为如下: a^b = |a-b| (按位相减)解答过程: 二进制数a与b异或,即a和b两个数按位进行,如果对应位相同,即为0(这个时候相当于对应位算术相减),如果不相同,即为1(这个时候相当于对应位算术相减的绝对值)。由于二进制每个位只有两种状态,要么是0,要么是1,则按位异或操作可以表达为按位相减后取绝对值。题目2:递归函数最终会结束,那么这个函数一定(不定项选择):1. 使用了局部变量 2. 有一个分支不调用自身3. 使用了全局变量或者使用了一个或多个参数这是一道简单的选择题,但包含的内容并不算简单,而 阅读全文

posted @ 2011-08-31 20:22 李大嘴 编辑