<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 石頭@ 閱讀(2386) 評論(1)  編輯  收藏 所屬分類: Tcp/Ip

    評論

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

    很不錯,比較經典
    2012-08-01 11:13 | ikillmeba
    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 日韩免费一级毛片| 一级特黄aaa大片免费看| 亚洲已满18点击进入在线观看| 色吊丝免费观看网站| 亚洲av无码不卡久久| 亚洲AV日韩AV永久无码下载| 四虎永久在线免费观看| 男女超爽刺激视频免费播放 | 1000部啪啪毛片免费看| 一级毛片a女人刺激视频免费| 亚洲中文字幕乱码AV波多JI| 亚洲综合日韩中文字幕v在线| 久久久久亚洲AV成人网| 国产真实伦在线视频免费观看| 无码av免费毛片一区二区| 久久免费福利视频| 4hu四虎免费影院www| 无忧传媒视频免费观看入口| 亚洲AV无码一区二区三区性色| 亚洲一区二区三区播放在线| 亚洲黄网在线观看| 久久亚洲精品人成综合网| 久久久综合亚洲色一区二区三区| 国产成人麻豆亚洲综合无码精品 | 免费观看亚洲人成网站| 亚洲欧美日韩一区二区三区在线 | 在线免费观看毛片网站| 在线观看AV片永久免费| 999在线视频精品免费播放观看| 1000部禁片黄的免费看| 日韩免费一区二区三区在线播放| 91人成网站色www免费下载| 午夜精品免费在线观看| 91大神免费观看| 亚洲免费在线视频观看| 波多野结衣中文字幕免费视频| 亚洲精品视频在线观看免费| 在线看免费观看AV深夜影院| 亚洲成在人线aⅴ免费毛片| 毛片免费观看的视频在线|