• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            asm, c, c++ are my all
            -- Core In Computer
            posts - 139,  comments - 123,  trackbacks - 0

            int Strcmp(char *str1, char *str2)
            {
            ?? int i=0;
            ?? int b=0;
            ?? while(str1[i]||str2[i])
            ?? {
            ????? if(str1[i]>str2[i])
            ????? {
            ???????? b=1;break;
            ????? }
            ????? else if(str1[i]<str2[i])
            ????? {
            ???????? b=-1;break;
            ????? }
            ????? i++;
            ?? }
            ?? return b;
            }

            ***************************************************************************************************************
            1.說(shuō)出下面這個(gè)程序的運(yùn)行結(jié)果,并簡(jiǎn)要敘述其理由:

            char buf1[10]="hello";
            char buf2[10]="hello";
            if (buf1==buf2)
            printf("equal!");
            else printf("not equal!");
            因?yàn)閎uf1,buf2分配了不同的內(nèi)存塊,而比較的是數(shù)組名,實(shí)際上是兩個(gè)分別指向數(shù)組起始元素地址的指針。

            2.指出下面這段程序中存在一些什么問(wèn)題:

            int loop,a[5];
            int* p=a;
            for (loop=0;loop<5;loop++)
            { p++;
            *p=loop;
            }

            數(shù)組a[5]在創(chuàng)建時(shí)沒(méi)有初始化, 在for循環(huán)里也沒(méi)有起到完全初始化數(shù)組的作用,而且對(duì)一塊未知內(nèi)存賦值。在最后一輪循環(huán)
            結(jié)束時(shí)p指向了數(shù)組a[5]的最后一個(gè)元素的下一個(gè)地址。

            string 系列

            char * strcpy( char *strDest, const char *strSrc )
            {
             assert( (strDest != NULL) && (strSrc != NULL) );
            char *address = strDest;
             while( (*strDest++ = * strSrc++) != ‘\0’ );
            return address;
            }

            char* strncpy(char* strdest, const char* strsrc, int n)
            {
            ?? assert((strdest != NULL) && (strsrc != NULL));
            ?? char* address = strdest;
            ?? while(n-- > 0)
            ????? *strdest++ = *strsrc++;
            ?? return address;
            }

            int strcmp(const char* str1, const char* str2)
            {
            ?? assert((str1 != NULL) && (str2 != NULL);
            ?? int ret = 0;
            ?? while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2))
            ?? {
            ????? str1++;
            ????? str2++;
            ?? }
            ?? if (ret > 0)
            ????? ret = 1;
            ?? else if (ret < 0)
            ????? ret = -1;
            ?? return ret;
            }

            int strlen(const char* str)
            {
            ?? assert(str != NULL);
            ?? int len = 0;
            ?? while ('\0' != *str++)
            ????? len++;
            ?? return len;
            }
            類string的構(gòu)造函數(shù)
            string::string(const char* str)
            {
            ?? if(str == NULL)
            ?? {
            ????? m_data = new char[1];
            ????? *m_data = '\0';
            ??? }
            ??? else
            ??? {
            ?????? int length = strlen(str);
            ?????? m_data = new char[str + 1];
            ?????? strcpy(m_data, str);
            ???? }
            }

            string 的析構(gòu)函數(shù)
            string::~string()
            {
            ?? delete [] m_data;
            }

            string 的拷貝構(gòu)造函數(shù)
            string ::string(const string& other)
            {
            ?? int len = strlen(other.m_data);
            ?? m_data = new char[len + 1];
            ?? strcpy(m_data, other.m_data);
            }

            string 的賦值函數(shù)
            string& string::operator=(const string& other)
            {
            ?? if (this == &other)
            ????? return *this;
            ?? delete [] m_data;
            ?? int len = strlen(other.m_data);
            ?? m_data = new char[len + 1];
            ?? strcpy(m_data, other.m_data);
            ?? return *this;
            }??


            不用任何局部和全局變量實(shí)現(xiàn)int strlen(char *a)

            int strlen(char *a) {
            ??? if('\0' == *a)
            ??????? return 0;
            ??? else
            ??????? return 1 + strlen(a + 1);
            }


            1)sizeof相關(guān)系列問(wèn)題
            2)const相關(guān)系列問(wèn)題
            3)大量林銳書的習(xí)題,以及各種變種
            這三個(gè)幾乎是每次必出現(xiàn)
            下面的這些是程序相關(guān)題,很多都是以前有討論過(guò)的,還請(qǐng)各位大俠能整理個(gè)比較適合做面試時(shí)答案的解答,多謝了.最好能給出
            討論鏈接,讓我等后輩有學(xué)習(xí)的機(jī)會(huì).
            1)求出相似度的算法.
            2)寫出二分查找的代碼.
            int binary_search(int* arr, int key, int n)
            {
            ?? int low = 0;
            ?? int high = n - 1;
            ?? int mid;
            ?? while (low <= high)
            ?? {
            ????? mid = (high + low) / 2;
            ????? if (arr[mid] > k)
            ???????? high = mid - 1;
            ????? else if (arr[mid] < k)
            ???????? low = mid + 1;
            ????? else
            ???????? return mid;
            ?? }
            ?? return -1;
            }
            ??
            3)寫出在母串中查找子串出現(xiàn)次數(shù)的代碼.
            *4)寫出快速排序或者某種排序算法代碼
            出現(xiàn)次數(shù)相當(dāng)頻繁
            5)寫出查找從一個(gè)集合中輸出所有子集合的算法.
            *6)實(shí)現(xiàn)strcpy函數(shù)
            char* strcpy(char* dest, const char* src)
            {
            ?? assert((dest != NULL) && (src != NULL));
            ?? char* address = dest;
            ?? while ('\0' != (*dest++ = *src++));
            ?? return address;
            }
            出現(xiàn)次數(shù)相當(dāng)頻繁
            *7)實(shí)現(xiàn)strcmp函數(shù)
            int mystrcmp(const char* str1, const char* str2)
            {
            ?? assert((str1 != NULL) && (str2 != NULL));
            ?? int ret = 0;
            ?? while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str2)
            ?? {
            ????? str1++;
            ????? str2++;
            ?? }
            ?? if (ret > 0)
            ????? ret = 1;
            ?? else if (ret < 0)
            ????? ret = -1;
            ?? return ret;
            }
            ??
            出現(xiàn)次數(shù)相當(dāng)頻繁
            8)將一個(gè)單鏈表逆序
            struct test
            {
            ?? int number;
            ?? double score;
            ?? test* next;
            }
            void reverse(test*& head)
            {
            ?? test* pe = head;
            ?? test* ps = head->next;
            ?? while(ps != NULL)
            ?? {
            ????? pe->next = ps->next;
            ????? ps->next = head;
            ????? head = ps;
            ????? ps = pe->next;
            ??? }
            }?
            ??
            ?????
            ?????
            9)循環(huán)鏈表的節(jié)點(diǎn)對(duì)換和刪除。
            *10)將一個(gè)數(shù)字字符串轉(zhuǎn)換為數(shù)字."1234" -->1234
            #i nclude<iostream>
            using namespace std;

            int f(char* s)
            {
            ?? int k = 0;
            ?? while (*s)
            ?? {
            ????? k = 10 * k + (*s++)- '0';
            ?????
            ?? }
            ?? return k;
            }

            int main()
            {
            ?? int digit = f("4567");
            ?? cout<<digit<<endl;
            ?? cin.get();
            }
            出現(xiàn)次數(shù)相當(dāng)頻繁
            11)實(shí)現(xiàn)任意長(zhǎng)度的整數(shù)相加或者相乘功能。
            *12)寫函數(shù)完成內(nèi)存的拷貝
            一個(gè)內(nèi)存拷貝函數(shù)的實(shí)現(xiàn)體

            void *memcpy(void *pvTo,const void *pvFrom,size_t size)

            {

            assert((pvTo!=NULL)&&(pvFrom!=NULL));

            byte *pbTo=(byte*)pvTo; //防止地址被改變

            byte *pbFrom=(byte*)pvFrom;

            while (size-- >0)

            *pbTo++ = *pbForm++;

            return pvTo;

            }

            出現(xiàn)次數(shù)相當(dāng)頻繁

            ?


            .筆試:
            1)寫一個(gè)內(nèi)存拷貝函數(shù),不用任何庫(kù)函數(shù).就是前些時(shí)候本版討論的那個(gè)問(wèn)題.
            ?void* memcpy(void* pvTo, const void* pvFrom, size_t size)
            ?{
            ??? assert((pvTo != NULL) && (pvFrom != NULL));
            ??? byte* pbTo = pvTo;
            ??? byte* pbFrom = pbFrom;
            ??? while (size-- > 0)
            ??? {
            ?????? *pbTo++ = *pbFrom++;
            ??? }
            ??? return pvTo;
            ?}
            2)將一個(gè)單鏈表逆序.(這個(gè)問(wèn)題是個(gè)常規(guī)的數(shù)據(jù)結(jié)構(gòu)問(wèn)題.不過(guò)不小心時(shí)會(huì)損失效率)
            3)客房預(yù)定的問(wèn)題.根據(jù)客戶報(bào)的人數(shù),客房等級(jí)來(lái)從預(yù)備的客房中選擇出所有符合要求的

            客房號(hào).客戶沒(méi)有要求等級(jí)時(shí),只考慮人數(shù)因素就可以了.要考慮有些客房已經(jīng)預(yù)定的情況.

            (寫代碼是要考慮好彼此的效率)
            4)對(duì)于一個(gè)無(wú)序序列進(jìn)行二分查找
            線排序再查找

            5)將一個(gè)數(shù)字字符串轉(zhuǎn)換為數(shù)字."1234" -->1234
            int convert(char* str)
            {
            ?? int k = 0;
            ?? while (*str != '\0')
            ?? {
            ????? k = k * 10 + *s++ - '0';
            ?? }
            ?? return k;
            }
            6)在文件(調(diào)用庫(kù)函數(shù)創(chuàng)建的,不用考慮數(shù)據(jù)庫(kù)的方式)中讀入信息(包括職工號(hào),職工產(chǎn)量)

            .根據(jù)輸入的信息(包括職工號(hào),職工產(chǎn)量)..檢測(cè)是否有相同的職工號(hào)記錄,如有,則增加其

            產(chǎn)量.如沒(méi)有,則創(chuàng)建新的記錄.最后的記錄排序的依據(jù)是職工產(chǎn)量(降序),如果產(chǎn)量相同,則

            按職工號(hào)(升序). (具體的題目記不太清了,這個(gè)題目有點(diǎn)長(zhǎng).哪位也去筆試了.請(qǐng)修正一下

            子)
            .
            2.面試
            1)找出兩個(gè)中文句子的相似度.(例如"中國(guó)江蘇南京" "江蘇省中國(guó)南京市".實(shí)際上是指的

            同一個(gè)地方.面試官的要求是一分鐘給出求相似度的算法.)(幸好聽老師講過(guò)中文分詞,要不

            然當(dāng)場(chǎng)就掛了)
            2)寫出二分查找的代碼.
            3)將上述代碼通用化.(在 C 的規(guī)范內(nèi).就是我前面所的那個(gè)問(wèn)題)
            4)寫出在母串中查找子串出現(xiàn)次數(shù)的代碼.(不顧及效率時(shí)好說(shuō).當(dāng)時(shí)一不留神把 KMP 說(shuō)了

            出來(lái),結(jié)果又讓我描述整個(gè)過(guò)程.汗..只好從頭又學(xué)了.不過(guò)沒(méi)有冷場(chǎng),邊學(xué)邊說(shuō).hoho)
            5)如何看待在函數(shù)中定義很多靜態(tài)變量.
            6)寫出quick_sort
            7)寫出查找從一個(gè)集合中輸出所有子集合的算法.
            8)有關(guān)于各種類型指針.各種數(shù)據(jù)類型的 sizeof 運(yùn)算結(jié)果( 在 C 中)

            posted on 2006-10-18 23:15 Jerry Cat 閱讀(2488) 評(píng)論(1)  編輯 收藏 引用

            FeedBack:
            # re: C++面試題集3
            2006-10-18 23:31 | Jerry Cat
            不知here有沒(méi)有南京的兄弟, 我以前南京的一個(gè)同學(xué)趙小姐要我?guī)兔Πl(fā)個(gè)租房消息, 某雖不懂但老同學(xué)的事也不好推, 將就如下:

            現(xiàn)有位于南京市江寧區(qū)"武夷花園"小區(qū)的三室一廳住房一套, 水,電,氣齊全, 室內(nèi)有熱水器, 電視機(jī)及床, 衣柜等簡(jiǎn)單家具. 整租, 與人合租均可. 聯(lián)系人: 趙小姐 電話:025-83909202  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理



            <2006年8月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(7)

            隨筆檔案

            最新隨筆

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            人妻丰满AV无码久久不卡| 亚洲国产精品人久久| 国内精品伊人久久久久网站| 久久久中文字幕| 国内精品久久久久久中文字幕| 久久精品国产亚洲精品2020| 99久久无码一区人妻a黑| 久久精品视频免费| 日本精品久久久久影院日本| 中文字幕无码免费久久| 九九久久99综合一区二区| 久久久精品国产sm调教网站| 久久免费的精品国产V∧| 色综合久久久久综合体桃花网| 久久精品成人免费看| 曰曰摸天天摸人人看久久久| 狠狠色丁香婷婷综合久久来来去| 久久强奷乱码老熟女网站| 久久国产精品无码HDAV| 99久久精品影院老鸭窝| 日本五月天婷久久网站| 99久久亚洲综合精品成人| 国产精品熟女福利久久AV| 无码精品久久久天天影视| 精品久久久久中文字幕日本| 国内精品久久久久久野外| 久久精品免费大片国产大片| 精品久久久久久无码中文字幕一区| 精品久久久久中文字幕日本| 99久久无码一区人妻| 区久久AAA片69亚洲| 91麻精品国产91久久久久| 香蕉久久久久久狠狠色| 久久男人AV资源网站| 中文字幕日本人妻久久久免费 | 久久精品国产精品亚洲人人| 久久天天躁狠狠躁夜夜2020老熟妇| 久久精品国产亚洲αv忘忧草| 日韩久久久久中文字幕人妻| 亚洲精品无码久久久久| 精品一久久香蕉国产线看播放|