常见公司面试题

    xiaoxiao2025-06-17  7

    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的区别

    还有几个输出分析,

     

    20151214总结题

    问题总结,大致能想到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()函数交换当前vectorvector from的元素

    http://www.360doc.com/content/14/0107/11/1317564_343269291.shtml 8.二叉树算法;  

    转载请注明原文地址: https://ju.6miu.com/read-1300024.html
    最新回复(0)