答:JQuery 主要是對對javascript作了封裝,使得使用js開發更加高效。 更好的提升項目開發的效率。 主要的封裝有:javascript
答:Weblogic 是java的服務器,其實咱們主要是使用weblogic進行系統的部署。 知足業務的開發須要。Weblogic 其實本質是servlet的容器,處理大量的Request或者Response的HTTP請求。對servlet進行管理工做。 servlet的的管理週期通常是,建立,啓動,鏈接,銷燬的過程。 WebLogic是美國Oracle公司出品的一個application server。 金融公司比較多使用weblogic主要也是考慮其穩定性和可擴展性。 而且對javaee的大量標準是支持的。 如ejb,servlet/jspphp
答:beanstalkd 是facebook開源的一款基於內存的輕量級的消息處理的中間件。咱們在項目中的使用場景是處理同步lifetime的廣告同步數據,這部分數據量比較多,而且對實時性要求不是很高。 因此咱們會專門的消息隊列來進行處理。 Beanstalkd 的原理機制是,採用channel的方式,生成者把消息放入channel中,而消費者能夠進行關注和訂閱channel,而且能夠設置消息的優先級。 這樣就可構建起生成者和消費的消息隊列。 以前facebook用於該消息中間件處理950w用戶的應用服務。css
答:logstash 是一個很是優秀的日誌採集組件。 咱們的使用場景是將不一樣服務器的nginx 報錯日誌經過logstash 統一採集,而且寫入到數據庫中。 logstash 的實現機制是採集增量的獲取日誌信息,而且能夠設置必定的規則條件,把這些日誌信息加載到內存中進行過濾和篩選處理,而後能夠輸出制定的格式,而且也提供相應的接口。 咱們是使用mysql的數據庫進行處理。html
答: Redshift是亞馬遜很是優秀的列式存儲的數據庫。 它對於大數據的查詢和存儲都提供了很是好的性能。 尤爲是對於大表直接的關聯索引性能很是好。 Redshift 處理大表的機制主要是把大表直接的執行解析成SQL語法樹,而根據語法樹木生成大量的執行任務。 而Redshift的執行器自己是分佈式機制。能夠把任務分配給不一樣的節點,而不一樣的計算後的統一結果彙總進行計算。 因此Redshift也是很是耗費內存的處理。 可是執行的效率很是的高。前端
Redshift能夠輕鬆自動執行大多數常規管理任務,以管理、監控和擴展數據倉庫。經過處理全部這些耗時耗力的任務,Amazon Redshift 使您獲得瞭解脫並專一於您的數據和業務。java
答: PHP 4.x這個版本以前沒有使用到,我使用的早期版本是php5.2.x, 使用了glob來查找全局類文件的過濾,在5.4中安全模式和一些python
Mysql 的版本特性變化mysql
答:HEARDOC其就是一個代碼塊。 裏面會忽略單引號或者雙引號,可是不會忽略變量的值。 在解析代碼塊的時候進行判斷,把引號保留,對於變量進行替換解析。linux
答:configure 是對php的一些配置,包括php的bin路徑,php.ini文件還有php的根目錄的配置。 這樣在編譯和執行php源碼或者擴展的時候能夠直接使用configure來操做。還有一些編譯的條件,如編譯內存的限制,使用的線程nginx
答:int :8字節, char :1字節, varchar : 可伸縮的定義大小,最大65535, datetime : text :65535(2的16次方) 固定的大小 mediumtext 2的24次方, longtext 2的32次方 timestamp : 自動存儲記錄修改時間 datetime: 日期時間 '2008-12-2 22:06:44'
兩種不一樣的標準規範,一種是IEEE(電氣電子協會一套),另一套是perl核心庫中支持的。
答:這個在php5.3進行移除了。 safe_mode 主要是避免一些重要對目錄或者對system可以操做的權限。 還有一些禁用的函數。
答:若是產生死鎖。
$ppid = posix_getpid();
$pid = pcntl_fork();
if($pid == -1) //父進程
{
exit("create sub process fail!");
}else if($pid >0)
{
echo "My process id :".$pid;
}else{
$cpid = posix_getpid();
echo "my child process:".$cpid;
}
複製代碼
答:xdebug 是php的調試擴展工具,客戶端發送http請求/或者命令行的CLI請求,xdebug會監聽請求的socket的端口和請求的地址信息,而後檢查breakpoint,斷點的具體位置,而後解析加載到內存的塊的變量信息和方法區的信息。 而且顯示在IDE出來。 每一步執行都會從新把內存區的變量信息用IDE進行打印出來。
apc: php加速緩存,能夠把php的代碼的字節碼文件緩存起來,並能夠設定失效的時間,若是php的過時時間沒有到,則這個緩存沒有失效。 這樣能夠提高線上環境的性能。一樣的在開發環境很容易形成代碼執行無效的狀況。
eAccelerator : 也是加速緩存,跟進動態內容進行緩存的操做。 php加速器,優化和動態內容緩存,提升了php腳本的緩存性能,
Xcache :字節碼緩存機制。 這意味着他可以提升您服務器上的 PHP 性能. 他經過把編譯 PHP 後的數據緩衝到共享內存從而避免重複的編譯過程, 可以直接使用緩衝區已編譯的代碼從而提升速度. 一般可以提升您的頁面生成速率 2 到5 倍, 下降服務器負載.
答:常見的排序算法有多種:(對於最小值進行作標記,若是有比它更小的,就進行插入)
答:Session 是爲了解決http協議的無狀態的狀況提供的一種方案。 http有cookie,可是cookie存儲在本地,這樣很容易產生數據的丟失,這樣就須要一個存儲到服務器的東西,方便http進行請求的時候來識別該用戶是已經登陸了。 還在線的狀態。 Session 就是會話,就是保持到服務器,這樣每次請求的時候須要檢查這個會話是否存在,存在表示這個用戶已經登陸了。 不然用戶進行從新的登陸。
在大型網站中,session的產生會很是多,而且須要保證的session可靠。 通常會對session進行分佈式管理。 session應用的時候要主要設置session的過時時間和在一些不一樣的應用場景關閉或者登出的時候都可以關閉會話。 常見的方案有:
答: SSO就是單點登陸的機制。機制:子系統跳到統一的驗證服務器,對帳號和密碼驗證後會返回一個惟一標識碼和這個用戶的帳號,而後子系統會把這個標識碼和帳號進行存儲(session的存儲)。 若是用戶在子系統登出這回銷燬session,並通知sso服務器session key 過時。 用戶從新登陸後有能夠從新獲取session的信息。 用戶有了session key 或者叫ticket 就能夠到支持該平臺的全部應用進行登陸。 而全部的接入的系統也會優先查詢下這個用戶的ticket是否失效,是否存在。
答:這是典型了map reduce的思路。
答: 堆分爲最大堆和最小堆的方式。 最大堆排序:左邊大於右邊, 父節點大於子節點。 因此每次從父節點進行比較,若是比它小就自動向下找,若是比它大就進行拆堆,當前的節點當作父節點,父節點變成左節點這樣遞歸來拆分。
最小堆排序:根節點的值最小。 最左邊的節點最大。 因此元素的查找從最左邊查找,直到查找到須要的節點元素。
答: http1.0 和http1.1的區別。 http1.0 主要仍是創建鏈接。相對http1.1來講沒有緩存的處理。這樣會耗費大量的鏈接消耗。 http1.1還支持keepalive ,長鏈接機制。 除了上面的區別還增長了,host的域處理。
答:uptime 或者top出現了負載值的狀況。 這個值的來源有1分鐘,5分鐘,15分鐘統計的結果。 這個負載值是進程在指定時間內等待的長度。 進程的隊列的條件(處於等待的狀態):
答:ssh 是安全的xshell機制,主要仍是方便遠程登陸,它是簡單來講採用SSL加密傳輸。它支持的通訊方式包括帳號和密碼進行socket的鏈接服務,也支持基於RSA非對稱加密的方式進行處理。 主要是創建服務器鏈接的機制。 ssh 安全協議支持兩種方式:
其實https是在這個ssh加密的方式上作了擴展,支持了第三簽名也就是CA. 而證書的頒發也是第三方請求後發送的。 瀏覽器對證書的可靠性進行驗證。 看是否來於合法的二級加密算法中。
答:ssh1.x 在加密算法上存在一些漏洞,因此後期升級到ssh2,如今主要仍是使用ssh2來進行加密的操做。
答:session 和cookie在以前的地方已經提到,這裏就再也不贅述。那如何解決session的跨域共享的問題呢? session的跨域共享能夠經過造成session的獨立服務器,這樣全部的session都由通用的服務器進行管理,或者構建出恆sso的單點登陸的驗證服務器來解決不一樣域名的訪問都是正常的。
最好的仍是由通用的受權中心進行驗證和管理session的登陸機制。
答:PHP的垃圾回收機制是根據時間來處理的。 在php5.2版本的時候垃圾回收機制採用了引用計數器,這個計數器的思路很是簡單,對於應用的變量或對象都會記錄一次,當引用的計數器的數量爲0時就清理該對象的應用。 可是這種計數器的方式很容易產生不少計數器的堆積。 基於此,使用了IBM的一套算法進行改進,思路以下:
答: PHP 咱們經常使用的運行模式有這同樣一些:
答:
答:方法一:在從庫添加字段,而後切換成爲主庫。 方法二:創建一張臨時表,把表結構和索引複製。最後把增量的數據根據移過來。 方法三:停服更新
答:explain 能夠顯示sql的索引狀況,顯示sql命中的統計數據,而optiwozer_trace能夠查看到每條sql執行和解析的過程,能夠方便sql執行的調試操做。這種的狀況對於複雜sql的組合操做仍是很是的重要的。
答:分表和分庫主要是對業務的拆分,把一個大的業務體系不斷的拆分紅小的數據庫和不一樣的表。對於怎麼來拆分庫和拆分表,須要考慮場景。咱們拆分表主要是根據時間,也有根據用戶,時間,廣告帳號等條件來拆分的。 數據的拆分也是把核心庫和非核心庫拆分,這樣核心庫的io不會受到非核心庫的大量產生阻塞做用。
怎麼來解決增表和減表的操做。這個要看具體的場景。若是咱們以前在分表的時候創建的邏輯數據庫訪問層的話。那麼須要調整邏輯策略和數據庫的遷移。 舉個例子, 若是是根據時間來增長表,如每一年一個表,那麼要增長表的時候,能夠定時任務,提早建立兩張表結構,若是是要刪除表,那麼能夠把表進行歸檔。並廢棄表。
除了時間分表,還能夠基於用戶的ID來+時間來拆分,如2018年用戶ID後兩位是01做爲一張表,這樣一年就有100張表進行存儲。一張表能夠存儲1kw的時候,那麼這樣的分表策略能夠支持一年1億條數據的存儲。
答:一致性hash算法是memcached集羣使用的算法結構方式,他使用的方式是採用hash映射的方式,把2的32次方的hash節點映射成memcached沛澤集羣。而且集羣的memcahe須要解決集羣中的問題。包括,單一性原則即便增長和刪除節點均可以共享到數據;,平衡的原則保證,還有就是負載的原則,保證不一樣節點分配的存儲的節點內容是負載是均衡的。
一致性hash能夠來解決這類的問題,主要的思路:不一樣的節點的增長和刪除hashkeyi會順時針的遷移。其實一致性的hash充當是一個邏輯的分配。hash對物理的節點創建了虛擬的複製節點,能夠訪問節點的有副本。若是節點掛掉了會把複製節點的內容進行順時針的遷移操做。
答:這個須要使用liunx的命令操做。
答: 線程是進程中的一部分,他們的本質都是操做系統的任務,不過線程的的開啓和關閉的資源消耗低於進程。一個進程能夠開啓多個線程進行處理。 相對來講,進程更加的穩定和高效。 進程有本身的地址空間和資源,進程之間是相互獨立的,而線程之間是能夠相互的訪問的,也能夠獲取進程的共享資源。線程之間能夠互相影響存在不穩定的狀況,檢測起來也比較麻煩。因此對資源消耗大的優化能夠採用線程,反之對於穩定性高的可使用進程來處理。
答:秒殺系統,這種場景隨處能夠見到。有春運搶票,搶紅包。 主要須要考慮的幾個點:
答:PHP增長了跟js同樣的事件回掉機制。這樣的好處在於,代碼執行完成後,能夠經過回掉機制進行異步提交,不須要等待提升效率。 其實異步回掉機制機制主要是把回掉函數封裝成對象傳入,當知足條件後,就能夠直接調用其回掉機制的方法進行處理了。
而異步回掉機制機制最後仍是依賴於操做中系統中的異步事件的註冊,而後系統會檢查是否存在知足條件的事件,若是知足就直接調用這個事件進行處理。
答:RESTful是輕量級的http服務架構,它對http進行了封裝,支持輕量級的調用和處理。包括對get,post ,put ,delete的支持,而且還支持了統一資源的路由方式,能夠直接經過ID獲取對象的資源。使得http的請求更加簡單和方便。 restful把互聯網看成資源池,經過uri的資源能夠獲取任何的資源。restful其實把整個網站做爲軟件,restful就是一種資源表現轉換的一種架構風格。
答:模版引擎,咱們是處處可見,常見的html本質上就是一個前端渲染模版。而咱們討論的版本引擎更多的是動態語言或者自定義語言封裝的模版引擎。如PHP view,smarty ,vectoty,這些模版首先會制定本身的模版渲染語法,常見的包括解析器的if,for switch等。從而能夠更快的渲染輸出結果。
答:中間件自己是解決必定場景的問題的工具,通常跟具體的業務關係不大。如redis能夠做爲消息中間件,解決消息發佈和消費的過程。
中間的原理提供統一的輸入和輸出的接口,而後提供中間的配置,能夠接入業務系統,方便總體業務的對接。
中間件主要是在應用和操做系統層之間的調用,中間件須要解決平臺化和消息通訊,這樣通常要支持分佈式的處理。如分佈式消息中間件,分佈式事務中間件,還有其餘的事件處理。
中間件整體來講是解決多操做系統的複雜接口的封裝,提供統一的,標準的調用接口。極大的提升的開發的效率和解決了不一樣的操做系統和不一樣的組建之間的消息通訊的處理機制。
答:常見的設計模式包括,單例模式,工廠模式,適配器模式,還有模版模式,策略模式。這些模式都是開發中都是常見處理的。單例模式更多的是怎麼來處理對象的共享對象的處理,把構造函數私有化,這樣統一的建立對象方法能夠負責方法的建立。
工廠模式: 負責生產對象。而後消費者,只須要對象的產品的名稱,調用工廠對象就能夠生產出該對象或者查詢已經生產的對象。
適配器模式:咱們常見的是經過插口的方式進行處理。爲了知足方法接口的調用,對不能哦使用的對象進行封裝,並增長鬚要知足特性的接口,而後進行接口的調用。
模版模式: 一個抽象類把要作成事情的步驟出來,如把大象裝進冰箱裏面,能夠把找來大象和找來冰箱,而後打開冰箱,最後把大象裝進冰箱經過繼承的對象進行實現處理。從而實現模版模式。
策略模式:咱們經常使用的人物是應用的算法模式,好比說排序有多種算法,所排序的有的類都實現sort排序的方法,而後經過排序的算法名稱就能夠實現算法的調用。從而實現
答: 總的設計原則是高內聚,低耦合。 常見的原則包括: 單一性原則,一個類只作一件事情 依賴倒置原則,抽象不依賴於具體的實現。 里氏原則:子類能夠替換父類全部的狀況。這樣父類儘量的設計的簡單和抽象。這樣子類能夠覆蓋父類的方法。 接口隔離原則:多個不一樣的場景實現,最好把多個接口分開實現進行調用。
接口的開閉原則:對擴張是支持開放的,這樣能夠擴展其特性,對修改進行關閉,這樣內部的修改,通常只有內部本身能夠完成修改操做。
答:網絡的安全。這個話題真的有點大,我說下我我的的理解。互聯網整體來講是無數的主機經過網絡鏈接在一塊兒的。網絡的本質就是解決不一樣主機之間能夠通訊的問題。同時主機之間本質上都是獨立的不相認識的。默認的狀況主機通訊是沒有安全問題,可是隨着互聯網把人類的生活場景映射到互聯網的時候,就容易造成互聯網的維護者,另外一方面是破壞者。這樣網絡的安全問題就誕生了。 常見出現的網絡安全問題有:
解決網絡的安全問題主要有:
而協議這一塊,基本上已經有了成熟的體系了。因此通常是創建在現有的安全協議上通訊。前面兩點在現有的體系有人負責處理了。咱們更多的是關注於加密技術和系統監控。 常見的加密有rsa非對稱加密,des,aes對稱加密,還有散列算法的加密,md5,sha1,sha2. 而系統的監控,能夠經過請求的特徵分析是否爲安全的。包括監控是否存在木馬,蠕蟲病毒的攻擊。
答:mysql的存儲優化這裏能夠從兩個角度來講,一個是基於業務的數據庫,表的存儲優化,另一個是存儲引擎的優化。 從第一種狀況來看,mysql數據庫存儲要根據核心業務和非核心業務拆分,減小非核心業務庫都核心庫業務的i/o影響。這就是咱們常見的分庫。這個須要考慮業務的場景。若是是對錶進行優化的話,須要考慮表包含的三個點,表結構,表索引,表數據。能夠分別進行考慮,如是否存在廢棄的表,廢棄的大字段,是否存在存儲的大字段的拆分。 而後對錶的索引優化,能夠基於業務判斷,索引是否存在足夠的命中,同理索引是否存在大量的冗餘等。 表數據的優化主要考慮是否進行表拆分,一個大表拆分紅多個表。而後進行業務的使用。具體的拆分都須要跟具體的應用場景來講看。 另外一個說下對存儲引擎優化。咱們經常使用的存儲引擎基於事物的innodb,特別是最近的mysql5.5以後重點仍是對innodb的優化。對於innodb的優化主要集中在配置的優化,包括innodb的緩存大小,還有緩緩衝隊列的長度調整。具體也須要根據業務的場景來調整。
答:詳見,服務器網絡編程的5種編程模型的操做。
答:簡單聊聊高併發吧,高併發是在單位時間裏面可以支撐起流量的請求而且可以進行快速的處理。咱們常見的是用戶的請求,或者接口的調用。這些流量的大量的堆積在一塊兒,造成流量洪峯。在咱們搞的項目中有幾點應對的經驗能夠聊下:
答:這個已經答了。在關閉這個窗口的時候就沒有序列化了。 本質是快速迭代,快速交互,小步快跑。
答:python也是一門腳本語言,而且愈來愈多的搞數學和算法的人選擇了這門語言,那爲何會出現了,有這門語言。它又相對PHP來講解決了什麼問題呢? 對於PHP的語言整體不是很高,PHP的基礎組件不是很完善,而主要仍是針對web的開發,這樣在必定程難度上很容易被侷限了。
php隨着web興起,對html的標籤支持的很是好,可是隨着web的興起和移動互聯網對開發的效率提升,天然拉昇了對PHP的需求。天然而然的PHP就更多人來開發和管理和使用了。可是PHP隨着基礎庫不夠完善和對於其餘的web平臺的開發就變得不是那麼的有競爭力。因此,就能夠真正的提升總體的體驗。
python隨着大數據和人工智能的發展,這門語言變的很是有必要進行開發和使用了。python語言仍是能夠嘗試學習下,而後進行必定的開發和調試操做。慢慢去解決存在的問題和遇到的問題。
答:python 也是一門腳本語言。 咱們採用的是behave的框架,這種框架是行爲驅動的測試場景,很是簡單的方式,就是能夠把一些測試用例的描述轉變成系統的開發測試經驗。從而保證系統的執行的效率。因此,能夠採用常常的數據庫的操做和方式的處理。只須要把測試用例的描述信息轉化成behave的制定的語法就能夠造成測試。本質就是測試關鍵字與語法的對應。
答:分佈式一致性的算法確認,在不一樣的分佈式結構過程當中
答:智能合約就是在知足數字協議的條件上進行自動執行合約的操做。
答:冒泡算法整體邏輯
答:插入排序,能夠前插入排序,也能夠後插入排序。前插入排序主要是
答:快速排序的算法思路:
答:什麼是鏈表?鏈表就是物理上是分離的,可是邏輯上經過指針連接各個節點的次序。 對鏈表就是節點的指針,包括頭節點,爲節點,經過指針進行鏈接/指向。 class Node{
public $val="";
public $name ="";
複製代碼
}
鏈表是物理上分散,邏輯上是連續的。 就比如,有不少珠子,那根線串起來就是鏈表。而每顆珠子都記錄下一顆珠子的引用。這樣就就能夠應用的位置找到下一個節點的地址塊,已經該節點的地址塊元素的值。同理,循環查找或者把地址的位置斷開,而後進行銜接。 開始要建立頭節點,頭節點能夠建立元素。next節點能夠爲null。 咱們採用節點指向的方式來處理。
答:這個是先進後出的,很是適合操做符或者一些變量和釋放。
答:先進先出,可使用數組做爲隊列,採用push,pop的方式進行處理。 也可使用雙向鏈表做爲做爲隊列的機制進行關聯和處理。
答:最小堆和最大堆。左邊大於右邊。進行處理!
答:樹的數據結構主要包含了跟節點和葉子結點。這樣就構成了樹的數據格式。 樹的格式包括左節點和右節點。
引用是對對象或者變量進行標識,能夠經過標識能夠獲取地址塊。而指針表示真實分配的地址塊,是物理內存中能夠查看到的。因此使用指針要防止指向的內存地址是否存在,這就是常見的空指針的狀況。
其實PHP的回收機制就很大程度上就是根據應用的地址來查看的。