<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    海闊天空

    I'm on my way!
    隨筆 - 17, 文章 - 69, 評論 - 21, 引用 - 0
    數據加載中……

    linux C 網絡編程面試題

    基礎部份:

    1.下列程序在32位linux或unix中的結果是什么?
    func(char *str)
    {
        printf("%d",sizeof(str));
        printf("%d",strlen(str));
    }

    main()
    {
        char a[]="123456789";
       
        printf("%d",sizeof(a));
       
        func(a);
    }

    答: 10   4   9


    網絡/網絡編程部份:

    1、connect方法會阻塞,請問有什么方法可以避免其長時間阻塞?
    答:最通常的方法最有效的是加定時器;也可以采用非阻塞模式。

    2、網絡中,如果客戶端突然掉線或者重啟,服務器端怎么樣才能立刻知道?
    答:若客戶端掉線或者重新啟動,服務器端會收到復位信號,每一種tcp/ip得實現不一樣,控制機制也不一樣。

    3.在子網210.27.48.21/30種有多少個可用地址?分別是什么?
    答:

    簡:
    30表示的是網絡號(network number)是30位,剩下2位中11是廣播(broadcast)地址,00是multicast地址,只有01和10可以作為host address。

    詳:
    210.27.48.21/30 代表的子網的網絡號是30位,即網絡號是210.27.48.21 & 255.255.255.251=210.27.48.20,此子網的地址空間是2位,即可以有4個地址:210.27.48.20, 210.27.48.21, 210.27.48.22, 210.27.48.23。第一個地址的主機號(host number/id)是0,而主機號0代表的是multicast地址。最后一個地址的最后兩位是11,主機號每一位都為1代表的是廣播 (broadcast)地址。所以只有中間兩個地址可以給host使用。其實那個問題本身不準確,廣播或multicast地止也是可以使用的地址,所以 回答4也應該正確,當然問的人也可能是想要你回答2。我個人覺得最好的回答是一個廣播地址,一個multicast地址,2個unicast地址。

    4.TTL是什么?有什么用處,通常那些工具會用到它?(ping? traceroute? ifconfig? netstat?)
    答:
    簡:TTL是Time To Live,一般是hup count,每經過一個路由就會被減去一,如果它變成0,包會被丟掉。它的主要目的是防止包在有回路的網絡上死轉,浪費網絡資源。ping和traceroute用到它。

    詳:TTL 是Time To Live,目前是hup count,當包每經過一個路由器它就會被減去一,如果它變成0,路由器就會把包丟掉。IP網絡往往帶有環(loop),比如子網A和子網B有兩個路由器 相連,它就是一個loop。TTL的主要目的是防止包在有回路的網絡上死轉,因為包的TTL最終后變成0而使得此包從網上消失(此時往往路由器會送一個 ICMP包回來,traceroute就是根據這個做的)。ping會送包出去,所以里面有它,但是ping不一定非要不可它。traceroute則是 完全因為有它才能成的。ifconfig是用來配置網卡的,netstat -rn 是用來列路由表的,所以都用不著它

    5.路由表示做什么用的?在linux環境中怎么來配置一條默認路由?
    答:
    簡:路由表是用來決定如何將包從一個子網傳送到另一個子網的,換局話說就是用來決定從一個網卡接收到的包應該送的哪一張網卡上的。在Linux上可以用“route add default gw <默認路由器IP>”來配置一條默認路由。

    詳: 路由表是用來決定如何將包從一個子網傳送到另一個子網的,換局話說就是用來決定從一個網卡接收到的包應該送的哪一張網卡上的。路由表的每一行至少有目標網 絡號、netmask、到這個子網應該使用的網卡。當路由器從一個網卡接收到一個包時,它掃描路由表的每一行,用里面的netmask和包里的目標IP地 址做并邏輯運算(&)找出目標網絡號,如果此網絡號和這一行里的網絡號相同就將這條路由保留下來做為備用路由,如果已經有備用路由了就在這兩條路 由里將網絡號最長的留下來,另一條丟掉,如此接著掃描下一行直到結束。如果掃描結束任沒有找到任何路由,就用默認路由。確定路由后,直接將包送到對應的網 卡上去。在具體的實現中,路由表可能包含更多的信息為選路由算法的細節所用。題外話:路由算法其實效率很差,而且不scalable,解決辦法是使用IP 交換機,比如MPLS。
    在Linux上可以用“route add default gw <默認路由器IP>”來配置一條默認路由。

    6.在網絡中有兩臺主機A和B,并通過路由器和其他交換設備連接起來,已經確認物理連接正確無誤,怎么來測試這兩臺機器是否連通?如果不通,怎么來判斷故障點?怎么排除故障?
    答:測試這兩臺機器是否連通:從一臺機器ping另一臺機器
         如果ping不通,用traceroute可以確定是哪個路由器不能連通,然后再找問題是在交換設備/hup/cable等。

    7.網絡編程中設計并發服務器,使用多進程 與 多線程 ,請問有什么區別?
    答案一:
    1,進程:子進程是父進程的復制品。子進程獲得父進程數據空間、堆和棧的復制品。
    2,線程:相對與進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。
    兩者都可以提高程序的并發度,提高程序運行效率和響應時間。
    線程和進程在使用上各有優缺點:線程執行開銷小,但不利于資源管理和保護;而進程正相反。同時,線程適合于在SMP機器上運行,而進程則可以跨機器遷移。

    答案二:
    根本區別就一點:用多進程每個進程有自己的地址空間(address space),線程則共享地址空間。所有其它區別都是由此而來的:
    1。速度:線程產生的速度快,線程間的通訊快、切換快等,因為他們在同一個地址空間內。
    2。資源利用率:線程的資源利用率比較好也是因為他們在同一個地址空間內。
    3。同步問題:線程使用公共變量/內存時需要使用同步機制還是因為他們在同一個地址空間內。

    posted on 2009-12-03 15:51 石頭@ 閱讀(2387) 評論(1)  編輯  收藏 所屬分類: Tcp/Ip

    評論

    # re: linux C 網絡編程面試題  回復  更多評論   

    很不錯,比較經典
    2012-08-01 11:13 | ikillmeba
    主站蜘蛛池模板: 中文成人久久久久影院免费观看| 亚洲av无码国产综合专区| 亚洲av片在线观看| 国色精品卡一卡2卡3卡4卡免费| 亚洲国产AV无码专区亚洲AV| 一级毛片免费一级直接观看| www国产亚洲精品久久久| 美女免费视频一区二区| 亚洲国产人成中文幕一级二级| 免费人成网上在线观看| 亚洲中文字幕无码专区| 国产精品午夜免费观看网站| 亚洲综合无码精品一区二区三区| a级毛片免费在线观看| 亚洲制服中文字幕第一区| 亚洲成人免费网站| 亚洲人成网站18禁止| 内射无码专区久久亚洲| 久久九九免费高清视频| 无码专区—VA亚洲V天堂| 麻豆高清免费国产一区| 亚洲美国产亚洲AV| 亚洲欧洲日本在线| 秋霞人成在线观看免费视频 | 永久免费A∨片在线观看| 精品亚洲麻豆1区2区3区| 国内精品乱码卡1卡2卡3免费| 亚洲熟妇丰满xxxxx| 亚洲日韩中文字幕日韩在线| 91在线免费视频| 亚洲国产精品线观看不卡| 性做久久久久免费看| 国产日韩精品无码区免费专区国产| 亚洲成AV人在线播放无码| 动漫黄网站免费永久在线观看 | 成人免费观看男女羞羞视频 | 亚洲六月丁香婷婷综合| 免费成人av电影| 亚洲毛片在线免费观看| 特黄特色的大片观看免费视频| 亚洲AV人无码综合在线观看|