amazon 3道笔试题:1 格雷码 2 removeVowel 3 right rotation 程序笔试题-strcpy,str实现,和c++的string 构造函数实现
igt: C++部分:
1. const和指针的关系
http://blog.csdn.net/fdsafwagdagadg6576/article/details/51777782
向前原则,看const的前面, constint *bb,是int,将(*bb)看成一个整体,是一个值。不能修改,*bb=0x45; 错误.int*const cc则表示地址固定。所以cc=(int*)0x45;错误,不能将0x45变成新地址,赋予cc。
*cc=0x45; cc中的value倒是可以改.
2. 代码差错
3. constructordestructor
4. 父子类 多态
5. createa binary tree
http://blog.csdn.net/fdsafwagdagadg6576/article/details/52105396
和前序遍历一样都是根,左子树,右子树。在main中调用的时候,将&T即根节点的地址传入即可
6. 指出下面几种写法的具体含义:char*, const char*, char* const, const char* const
向前原则,看const的前面, constint *bb,是int,将(*bb)看成一个整体,是一个值。不能修改,*bb=0x45; 错误.int*const cc则表示地址固定。所以cc=(int*)0x45;错误,不能将0x45变成新地址,赋予cc。*cc=0x45;cc中的value倒是可以改
7. 虚函数、继承,STL等等
8. virtual 函数继承的相关问题,多态性问题
9. 拷贝构造函数的作用,直接为一个类写一份拷贝构造函数,析构函数的作用
拷贝构造函数p(a)对象初始化. 将new出来的堆全部释放.
拷贝构造函数的实现用new出空间,然后copy.
http://blog.csdn.net/fdsafwagdagadg6576/article/details/52186666
10. Unicode 以及非unicode的区别
例子: str=”中文abc”
Uncode 双字节编码,length=12(加\0);gb2312中文双,英文单.length=
11. windows下的同步机制有哪些?
1 同一个应用程序内一个以上的线程可以同时访问此资源(多于一个.同时打开5个txt)。类似pv操作。例子是《把脉vc++》中,同时两个人说话的例子. 有一定限定数的串行。用CSemaphore
2 一个以上应用程序使用此资源(如dll),用Cmutex(跨进程).
同一个进程内,多线程用CCriticalSection.
3 有先后顺序用CEvent(非重点)
4 WaitForMultipleObject 等待内核的事件
12. windows下消息和事件是如何触发和存储的?应用程序如何获取事件和消息?
Window消息机制,用于界面和用户交互。
消息即1 windows消息WM_PAINT,WM_LBUTTONUP,… 2 命令消息 3 控件通知消息。事件是onLbutton,消息是wm_Lbutton.
Scenario 1: 消息映射宏—user事件(消息和执行函数map映射)
Begin_message_map
On_WM_lBUTTONDOWN()
On_COMMAND(ID_FILE_PRINT,Cview::OnFilePrint)
End_message_map
消息响应函数
CMyview::OnLButtonDown()
{
MessageBox(“WM_LBUTTONDOWN”);
CView::OnLButtonDown();
}
Senario2:
窗口之间传送消息 (senario 2: begin_message_map之间是on_message和on_commoand一样,定义宏和对应的执行函数. 和onLButton不同,事件来自第0步,界面的user操作。然后根据绑定宏,执行具体函数。这个事件是需要第3步,事件是sendmessage。即给不同的进程or窗体)
第一步:
#define WM_REINITELECTRICVALVE WM_USER+1989 // do something
第二步:
BEGIN_MESSAGE_MAP(CMainDialog,CBaseDialog)
//{{AFX_MSG_MAP(CMainDialog)
ON_MESSAGE(WM_REINITELECTRICVALVE,OnReInitMemberValve)
//CMainDialog dialog
第三步:
::SendMessage(((CLgApp*)AfxGetApp())->m_dlg.m_hWnd,WM_REINITELECTRICVALVE,0,0);
获取到消息映射
Const AFX_MSGMAP *pMap =this->GetMessageMap();
Const AFX_MSGMAP_ENTRY * PEntries =pMap->lpEntries();
While(pEntries->pfn!=NULL)
{
pEntriess++;
}
Result is :
WM_SYSCOMMAND; WM_PAINT;WM_QUERYDRAGICON;WM_COMMAND
在WM_COMMAND中
BEGIN_MESSAGE_MAP
ON_WM_PAINT()
//将上面的WM_COMMAND 变成了具体的ON_BN_CLICKED消息
ON_BN_CLICKED(IDC_BUTTON1,&CMessageMapTestDlg::OnBnClickedButton1)
END_MESSAGE_MAP
消息用messagemap即map存储的
_messageMap[message]=handler (handler是执行函数)
13. C#中GC的工作原理
带的概念。第0代每个gc周期都检查,释放。用的放入第1代。第1代10个gc检查1次,用的不释放的放入第二代。第2代100个gc检查1次
14. const和指针一起使用的用法和意义 同问题6
15. 编写Binary Tree的一个程序
16. CastingOperater
Static_cast,const_cast,reinterpret_cast
C 风格显式转换(C style explicit conversion)
double d=3.14159265; int i = static_cast<int>(d);
下行转换(down-casting)
CBase b; CBase*pb;CDerived d; CDerived* pd; pd = dynamic_cast<CDerived*>(&b);
reinterpret_cast <new_type>(expression) 重解释转换(随便转最不安全)
class A {};class B {};A * a = new A;B * b =reinterpret_cast<B*>(a);//correct!
Const_cast常量指针被转化成非常量的指针,并且仍然指向原来的对象
17. 数组排序的合并
18. 分析程序的打印输出
Windows部分:
1. Events
2. 自动机
3. VC的函数
4. windows如何存贮消息和事件的,以及如何把他们分发给相应的窗口或者进程
算法:
1. 给定一棵二叉树的前序和中序遍历结果,推导出这个二叉树
1) 传根进入递归函数 2)在递归malloc节点 3) 在前序遍历中找根
4)在中序遍历中划分左右子树,然后递归
2015.11.26 总结题
深拷贝和浅拷贝的区别
两个有序数组的合并,
实现字符串转整数,不能用库函数
1入参str 2 和字符0,9比较。result = result*10+(*str++ - '0'); 3加个负数判断
实现拷贝构造函数,重载等于运算符函数,构造函数和析构函数实现
c++类型转换跟c的区别
还有几个输出分析,
2015.12.14总结题
问题总结,大致能想到8个,如下: 1.指针问题; 2.STL迭代器问题; 3.程序找错; 4.Windows消息/事件机制; 5.Unicode与非Unicode编码问题; 6.各类构造函数相关; 7.vector<int>类型变量vi, 则vector<int>(vi).swap(vi)是什么意思;
swap 函数
语法:
void swap(vector &from ); //swap()函数交换当前vector与vector from的元素
http://www.360doc.com/content/14/0107/11/1317564_343269291.shtml 8.二叉树算法;