笔试题目分享

stuarts740 2010-10-16 11:29:42
1、不用sizeof,求int占的字节数(三种方法:地址差,移位,union)

2、二叉树节点结构体定义如下:
struct Node
{
DataType value;
Node* left;
Node* right;
}
给定根节点和任意两个子节点,求两个子节点的最近的公共父节点。
Node* GetParent(Node* root,Node* t1,Node* t2);

3、单链表,去掉重复元素,单链表里面存的是整型数据。

4、自己写string类,构造函数,重载+运算符。

5、内存泄露问题,怎么查找?

6、给一个很大的文本文件,文件内包括逗号分隔的若干个整型数字,统计数字出现频率前十位的数字。

7、给定循环排序数组,如 9 8 1 2 3 4 5,查找指定元素。

8、数据库的索引怎么使用?实现原理是什么?

9、C++动态绑定(虚函数)是怎么实现的?
...全文
164 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
we_sky2008 2010-10-18
  • 打赏
  • 举报
回复
这样算是使用UNION吗?

int sizeofint()
{
int bytes;
union
{
char c[16];
int i;
}tmp = {{0}};

tmp.i = -1;
for (bytes = 0; tmp.c[bytes] != 0; bytes++)
;
return bytes;
}
we_sky2008 2010-10-18
  • 打赏
  • 举报
回复
第一题:
#define SIZEOFINT ((int)((int *)0 + 1))
int sizeofint()
{
int bytes;
for (bytes = 1; (1 << ((bytes) << 3)); bytes++)
;
return bytes;
}
we_sky2008 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ayw215 的回复:]
引用 4 楼 we_sky2008 的回复:

第三题:
C/C++ code

node* remove_same(node *head)
{
set<int> si;
node *p1, *p2 = head;

while (p2 != NULL)
{
if (si.count(p2->data))
{
p1->next = p2->next;
……
昏。。。……
[/Quote]
哈哈..
ayw215 2010-10-18
  • 打赏
  • 举报
回复
1、不用sizeof,求int占的字节数(三种方法:地址差,移位,union)
==简单
2、二叉树节点结构体定义如下:
struct Node
{
DataType value;
Node* left;
Node* right;
}
给定根节点和任意两个子节点,求两个子节点的最近的公共父节点。
Node* GetParent(Node* root,Node* t1,Node* t2);
==老题目了,参考这里:
http://fayaa.com/tiku/view/16/
3、单链表,去掉重复元素,单链表里面存的是整型数据。
===这个单链表有序么?有序的话是o(n)的时间复杂度
4、自己写string类,构造函数,重载+运算符。
===基础题
5、内存泄露问题,怎么查找?
===Linux下可以考虑用valgrind工具,写代码可以考虑使用boost智能指针防止内存泄露
6、给一个很大的文本文件,文件内包括逗号分隔的若干个整型数字,统计数字出现频率前十位的数字。
===hash+归并
7、给定循环排序数组,如 9 8 1 2 3 4 5,查找指定元素。
===改进的二分法查找,O(lgN)
8、数据库的索引怎么使用?实现原理是什么?
===不熟悉数据库-_-!!!
9、C++动态绑定(虚函数)是怎么实现的?
==虚函数表
ayw215 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 we_sky2008 的回复:]

第三题:
C/C++ code

node* remove_same(node *head)
{
set<int> si;
node *p1, *p2 = head;

while (p2 != NULL)
{
if (si.count(p2->data))
{
p1->next = p2->next;
……
[/Quote]昏。。。你都用上set了
we_sky2008 2010-10-18
  • 打赏
  • 举报
回复
第三题:

node* remove_same(node *head)
{
set<int> si;
node *p1, *p2 = head;

while (p2 != NULL)
{
if (si.count(p2->data))
{
p1->next = p2->next;
delete p2;
p2 = p1->next;
}
else
{
si.insert(p2->data);
p1 = p2;
p2 = p2->next;
}
}
return head;
}
stuarts740 2010-10-18
  • 打赏
  • 举报
回复
怎么没有人写答案呢?
wasx1 2010-10-17
  • 打赏
  • 举报
回复
进来学习一下了,多谢楼主了
S_zxing 2010-10-16
  • 打赏
  • 举报
回复
今天也参加了一笔试,发现有几道差不多啊。
比如,4和8。都有,写string类,构造函数,析构函数,重载=运算符。
今天数据库的考的比较多……

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧