面試問題蒐集及解析 多線程範圍內的數據共享 1000瓶水有1瓶水有毒,老鼠喝一滴就會死,可是須要一週毒發,請問最少須要多少老鼠多少時間才能找到那瓶有毒的水。 找出鏈表中環的入口節點

 

計算機網絡html

 

TCP的三次握手和四次揮手,爲何c++

TCP擁塞控制算法

UDP如何實現可靠性傳輸 sql

TCP的報文格式數據庫

HTTP報文格式編程

HTTP1.0、1.一、2.0區別設計模式

瀏覽器輸入一個網址後執行的全過程數組

什麼是socket瀏覽器

HTTPS 安全

HTTP 

TCP/IP協議各層數據格式及首部含義

 Internet四層體系結構 

OSI七層模型

NAT協議

TCP與UDP的區別

怎麼在ipv4中找一個ip地址

Q:DDos攻擊的原理介紹一下 

A:emmm...listen有一個隊列,處理鏈接請求。在收到匿名IP發過來的SYN以後,會在listen隊列中存放一個記錄,可是隊列容量是有限的,當這樣的惡意請求過多的時候,listen隊列裏就塞滿了這些無效的鏈接請求,而後裝不下更多的鏈接記錄了,因此就拒絕其餘請求了

 

 

操做系統&數據庫

 

單例模式(兩種)

生產者消費者的同步操做

內存泄漏的具體解決辦法.

內核態和用戶態的區別

 進程調度算法

如何對數據庫的IO進行優化

操做系統爲何要在外存上使用分頁技術

 操做系統基本分頁存儲管理方式

頁面置換算法

多線程同步和互斥的實現方法

協程

 進程與線程的切換代價比較

多線程如何確保安全

信號量怎樣通訊

多線程範圍內的數據共享

I/O多路複用

 

死鎖,如何解決死鎖

死鎖?死鎖產生的緣由?死鎖的必要條件?怎麼處理死鎖?(四個方面)
解析:(1)相互等待資源而產生的一種僵持狀態,若是沒有外力的干預將一直持續這個狀態
          (2)系統資源不足、相互競爭資源、請求資源順序不當
          (2)互斥、不可剝奪、等待、循環等待
          (3)由於互斥是不可改變的,因此只能破壞其餘三個條件中的一個來解除死鎖,方法:剝奪資源、殺死其中一個線程

 

 

一、進程和線程的區別?

 

解析:(1)進程是資源的分配和調度的一個獨立單元,而線程是CPU調度的基本單元

 

          (2)同一個進程中能夠包括多個線程,而且線程共享整個進程的資源(寄存器、堆棧、上下文),一個進程至少包括一個線程。

 

          (3)進程的建立調用fork或者vfork,而線程的建立調用pthread_create,進程結束後它擁有的全部線程都將銷燬,而線程的結束不會影響同個進程中的其餘線程的結束

 

          (4)線程是輕量級的進程,它的建立和銷燬所須要的時間比進程小不少,全部操做系統中的執行功能都是建立線程去完成的

 

          (5)線程中執行時通常都要進行同步和互斥,由於他們共享同一進程的全部資源

 

          (6)線程有本身的私有屬性TCB,線程id,寄存器、硬件上下文,而進程也有本身的私有屬性進程控制塊PCB,這些私有屬性是不被共享的,用來標示一個進程或一個線程的標誌
 

 

多進程和多線程的使用場景

有哪些方法清除cache中舊的數據

SQL優化,有哪些優化方法

有名管道

I/O多路複用

 淺拷貝和深拷貝

select poll epoll的區別 底層實現原理

協程

怎麼保證一個CPU只有一個線程運行

線程的基本組成是什麼?

線程分配什麼:tcb

線程有什麼狀態?運行掛起結束狀態,有新生狀態嗎?新生(初始狀態)狀態?

多線程同步和互斥方法,內核態下有什麼方法,回答三個:信號、互斥量、條件遍歷

條件變量是什麼?

信號量是什麼?信號量不是多個資源能夠訪問統一資源嗎?多個時刻能夠訪問同一個資源

守護進程、殭屍進程、孤兒進程,守護進程的做用是什麼?

socket是幹嗎的

內存映射是什麼

弱類型、強類型、動態類型是什麼(C是什麼類型的語言,屬於動態語言仍是靜序算法,優勢和缺點)

數據庫的事務是什麼?

一範式二範式三範式是什麼?

5種I/O模型

索引,B+樹

CAS與讀寫鎖

鎖,可重入鎖 

線程同步的方式

五、IPC通訊方式?

 

解析:(1)管道(匿名管道(pipe親緣關係的進程通訊)、命名管道(mkfifo/mknod))

 

          (2)消息隊列:是基於消息的、用無親緣關係的進程間通訊,主要函數:msgget、msgsend、msgrecv、msgctl

 

          (3)信號量:至關於一把互斥鎖,經過p、v操做,主要函數:semget、semop、semctl

 

          (4)共享內存:是進程間通訊速度最快的,因此用常常是集合信號量或互斥鎖來實現同步,shmget、shmat、shmdt、shmctl

 

19.fork、vfork還有clone的區別
 
20.殭屍進程和避免殭屍進程
 
21.驚羣效應
 
22.中斷的做用
 

27.內存分配原理

 

29.poll和epoll的區別

 

30.epoll中ET模式與LT模式的區別

 

31.數據庫事務

 

44.epoll的水平觸發和邊緣觸發

 

 

 

 iOS相關

 

UIViewController的生命週期

OC的界面傳值

OC如何實現多重繼承

 

 

 

 

 

 

c++11的新標準

多態

析構函數,虛析構函數

hash

 

合併兩個有序鏈表比較快的方法

 構造函數、複製構造、複製操做、移動構造、移動操做

派生類中的構造函數執行順序

二叉排序樹的插入、刪除

字符串轉double的代碼

紅黑樹

 

設計模式

單鏈表和雙向鏈表

hashmap原理

數組和指針的區別

new和malloc

vector底層的實現

全局變量和static變量的區別.若是在兩個.h文件中聲明兩個同名變量會怎麼樣? 若是使用extern 若是沒有使用

map set的實現原理

漢諾塔

若漢諾塔的底盤有2種顏色,如何分離它們

給了數據流,求歷史記錄中的中位數(用2個優先隊列)

 對稱與非對稱加密

 

用O(1)時間複雜度返回當前棧中最小元素

 

 

 

 

存儲大量(上億)的單詞,如何在最短期內找到想要的數據

C語言中局部變量與全局變量在內存中的存放位置

類成員函數中重載/重寫(覆蓋)/重定義(隱藏)的區別

 

 

 

1000瓶水有1瓶水有毒,老鼠喝一滴就會死,可是須要一週毒發,請問最少須要多少老鼠多少時間才能找到那瓶有毒的水。

 

 

找出鏈表中環的入口節點

 

騰訊現場一面補充:

tcp的滑動窗口

udp怎樣確保不丟包(kcp)

手寫快速排序

找出二叉樹的最長路徑

 

騰訊現場複試補充:

加密算法(明文、暗紋、對稱、非對稱加密) 

 

 

 

阿里一面補充知識點:

單鏈表的翻轉

直播技術

TCP的擁塞控制

 

 酷家樂一面補充:

http協議

分詞技術

分佈式存儲

 

WPS一面補充:

棧內存和堆內存的區別

static和const的區別

map的自定義key值怎樣排序

 

 

 

 

 

解決hash衝突的幾種方式

排序算法及相應的複雜度,穩定性

static的全部應用場景

函數棧幀

用C實現C++的特性

哈夫曼動態壓縮

泛型編程

STL庫經常使用接口

面向對象的特性

df底層/原理是什麼,是幹什麼的,百分比計算是怎麼算的

一個文件被刪除了,沒有被釋放是什麼緣由呢?

 

給你一個50億的整數讓你找出中位數(分治法 和 位圖法)

sql語句

二叉搜索樹

 

密碼加密MD5

N個紅白藍三種小球,亂序排在一塊兒,兩兩交換,要求從左至右排序成紅白藍

二維數組,行遞增從左至右,列從上到下遞增,給一個數,求出該數的位置

線程同步的方式

B+樹

 

 

 

 

 

若是一個函數傳入一個對象,那麼這是淺拷貝仍是深拷貝?

若是使用的是引用或指針不會發生拷貝,若是傳入的類沒有實現拷貝構造函數則是淺拷貝,若是實現了拷貝構造函數則看實現的拷貝構造函數是淺拷貝仍是深拷貝。

 

C語言裏的指針是什麼?

首先它是一個變量,裏面存的是所指向的內部數據類型或對象的地址。取內容能夠得到這個數據或對象。

 

實際上指針不必定是變量,也有常量指針,不過通常都說指針是指針變量的簡稱。因此上述表達沒有什麼問題。

 

形參實參的區別

形參指的是外部調用的時候傳入的參數,實參是函數在處理內部所使用的參數

 

爲何C++開發時用來作基類的類的析構函數通常都是虛函數?

這樣作是爲了當用一個基類的指針刪除一個派生類的對象時,派生類的析構函數會被調用。

 

 

 

 

 

 

1. sizeof和strlen的區別

 

2.一個int大概多大?
32位4個字節,64位8個字節
 
3.map with mutex和sync.Map的區別
 
4.sizeof和strlen的區別
 
5.多個進程同時監聽一個UDP端口會怎麼樣?
 
6.++i和i++的區別?
 
7.
進程的內存結構?
A:內核、棧、動態連接庫、堆、靜態區、代碼段、保留區
 
8.
Q:靜態變量和全局變量在哪一個區?
A:靜態區……
 
9.
Q:++i和i++的區別?
A:++i效率比較高。
 
10.
Q:空類的大小?
A:1byte
 
11.引用和指針的區別?
 
 
13.在一個字符串中找到一個子序列
 
14.怎麼判斷兩個鏈表是否交叉
 
15.怎麼找若干個子串中任意兩個子串的的最長公共前綴
 
16.怎麼實現一字節對齊
 
17.怎麼實現無鎖循環隊列
 
18.手撕代碼:一顆二叉搜索樹,找出樹中的第k大節點
 
 
 

 

28.AVL樹、B+樹、紅黑樹

 

 

 

 

32.

  (1)多態性都有哪些?(靜態和動態,而後分別敘述了一下虛函數和函數重載

    (2)動態綁定怎麼實現?(就是問了一下基類與派生類指針和引用的轉換問題)

    (3)類型轉換有哪些?(四種類型轉換,分別舉例說明)

    (4)操做符重載(+操做符),具體如何去定義,?(讓把操做符重載函數原型說一遍)

    (5)內存對齊的原則?(原則敘述了一下並舉例說明)

    (6)模版怎麼實現?

    (7)指針和const的用法?(就是四種狀況說了一下)

    (8)虛函數、純虛函數、虛函數與析構函數?(純虛函數如何定義,爲何析構函數要定義成虛函數)

    (9)內聯函數(講了一下內聯函數的優勢以及和宏定義的區別)

    (10)const和typedef(主要講了const的用處,有那些優勢)

    (11)排序算法有哪些?快速排序怎麼實現的?最好時間複雜度,平均時間複雜度

    (12)連接指示:extern 「C」(做用)

    (13)c語言和c++有什麼區別? (大致講了 一下,繼承、多態、封裝、異常處理等)

33.c++中四種類型轉換機制?

34.strcpy函數的編寫?

35.虛函數,虛函數表裏面內存如何分配

36.類的封裝:private,protected,public

37.二叉樹查找最近公共祖先

38.實現簡單二叉樹類,實現插入,刪除和前中後序遍歷

39.tcpdump

40.動態庫和靜態庫的區別

 

45.一個公交站在1分鐘內有車通過幾率是p,問3分鐘內有車通過幾率 1-(1-p)^ 3

  

 

 

網絡:

 

瀏覽器輸入一個網址後執行的全過程

什麼是socket

HTTPS 

HTTP

TCP/IP協議各層數據格式及首部含義

 

操做系統:

 

多線程同步和互斥的實現方法

協程

 進程與線程的切換代價比較

多線程如何確保安全

 

 C++:

 

智能指針

如何在main函數以前執行操做

C++類成員變量初始化順序

C++靜態類型成員變量的初始化順序

Vector容量倍增

封裝、繼承、多態的理解

可否在構造、析構函數中拋出異常

引用和指針的區別

輸出自身的程序

 

 

 

區別問題:

棧內存和堆內存的區別

信號量與條件變量的區別

引用與指針的區別

sizeof和strlen的區別

TCP和UDP的區別

static與const區別

相關文章
相關標籤/搜索