當前位置:首頁 » 網頁前端 » it前端面試試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

it前端面試試題

發布時間: 2022-09-06 11:49:56

A. 2021面試網路工程師的題目

面試 的目的是確定面試者如何處理他們所選擇的研究領域的問題,以及他們如何批判性地思考問題。下面我給大家帶來2021面試網路工程師的題目參考,希望能幫助到大家!

Java多線程 面試題 目

1、什麼是線程?

線程是 操作系統 能夠進行運算調度的最小單位,它被包含在進程之中,是進程中的實際運作單位。程序員可以通過它進行多處理器編程,你可以使用多線程對運算密集型任務提速。比如,如果一個線程完成一個任務要100毫秒,那麼用十個線程完成改任務只需10毫秒。

2、線程和進程有什麼區別?

線程是進程的子集,一個進程可以有很多線程,每條線程並行執行不同的任務。不同的進程使用不同的內存空間,而所有的線程共享一片相同的內存空間。每個線程都擁有單獨的棧內存用來存儲本地數據。

3、如何在Java中實現線程?

兩種方式:java.lang.Thread 類的實例就是一個線程但是它需要調用java.lang.Runnable介面來執行,由於線程類本身就是調用的Runnable介面所以你可以繼承java.lang.Thread 類或者直接調用Runnable介面來重寫run() 方法 實現線程。

4、Java 關鍵字volatile 與 synchronized 作用與區別?

Volatile:

它所修飾的變數不保留拷貝,直接訪問主內存中的。

在Java內存模型中,有main memory,每個線程也有自己的memory (例如寄存器)。為了性能,一個線程會在自己的memory中保持要訪問的變數的副本。這樣就會出現同一個變數在某個瞬間,在一個線程的memory中的值可能與另外一個線程memory中的值,或者main memory中的值不一致的情況。 一個變數聲明為volatile,就意味著這個變數是隨時會被其他線程修改的,因此不能將它cache在線程memory中。

synchronized:

當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多隻有一個線程執行該段代碼。

一、當兩個並發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以後才能執行該代碼塊。

二、然而,當一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。

三、尤其關鍵的是,當一個線程訪問object的一個synchronized(this)同步代碼塊時,其他線程對object中所有 其它 synchronized(this)同步代碼塊的訪問將被阻塞。

四、當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。

五、以上規則對其它對象鎖同樣適用。

5、有哪些不同的線程生命周期?

當我們在Java程序中新建一個線程時,它的狀態是New。當我們調用線程的start()方法時,狀態被改變為Runnable。線程調度器會為Runnable線程池中的線程分配CPU時間並且講它們的狀態改變為Running。其他的線程狀態還有Waiting,Blocked 和Dead。

6、你對線程優先順序的理解是什麼?

每一個線程都是有優先順序的,一般來說,高優先順序的線程在運行時會具有優先權,但這依賴於線程調度的實現,這個實現是和操作系統相關的(OS dependent)。

我們可以定義線程的優先順序,但是這並不能保證高優先順序的線程會在低優先順序的線程前執行。線程優先順序是一個int變數(從1-10),1代表最低優先順序,10代表最高優先順序。

7、什麼是死鎖(Deadlock)?如何分析和避免死鎖?

死鎖是指兩個以上的線程永遠阻塞的情況,這種情況產生至少需要兩個以上的線程和兩個以上的資源。

分析死鎖,我們需要查看Java應用程序的線程轉儲。我們需要找出那些狀態為BLOCKED的線程和他們等待的資源。每個資源都有一個唯一的id,用這個id我們可以找出哪些線程已經擁有了它的對象鎖。

避免嵌套鎖,只在需要的地方使用鎖和避免無限期等待是避免死鎖的通常辦法。

8、什麼是線程安全?Vector是一個線程安全類嗎?

如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是線程安全的。

一個線程安全的計數器類的同一個實例對象在被多個線程使用的情況下也不會出現計算失誤。很顯然你可以將集合類分成兩組,線程安全和非線程安全的。Vector 是用同步方法來實現線程安全的, 而和它相似的ArrayList不是線程安全的。

9、Java中如何停止一個線程?

Java提供了很豐富的API但沒有為停止線程提供API。JDK 1.0本來有一些像stop(), suspend()和resume()的控制方法但是由於潛在的死鎖威脅因此在後續的JDK版本中他們被棄用了,之後Java API的設計者就沒有提供一個兼容且線程安全的方法來停止一個線程。

當run()或者 call()方法執行完的時候線程會自動結束,如果要手動結束一個線程,你可以用volatile 布爾變數來退出run()方法的循環或者是取消任務來中斷線程。

10、什麼是ThreadLocal?

ThreadLocal用於創建線程的本地變數,我們知道一個對象的所有線程會共享它的全局變數,所以這些變數不是線程安全的,我們可以使用同步技術。但是當我們不想使用同步的時候,我們可以選擇ThreadLocal變數。

每個線程都會擁有他們自己的Thread變數,它們可以使用get()set()方法去獲取他們的默認值或者在線程內部改變他們的值。ThreadLocal實例通常是希望它們同線程狀態關聯起來是private static屬性。

Kubernetes面試題匯總

1、什麼是Kubernetes?

Kubernetes是一個開源容器管理工具,負責容器部署,容器擴縮容以及負載平衡。作為Google的創意之作,它提供了出色的社區,並與所有雲提供商合作。因此,我們可以說Kubernetes不是一個容器化平台,而是一個多容器管理解決方案。

2、Kubernetes與Docker有什麼關系?

眾所周知,Docker提供容器的生命周期管理,Docker鏡像構建運行時容器。但是,由於這些單獨的容器必須通信,因此使用Kubernetes。因此,我們說Docker構建容器,這些容器通過Kubernetes相互通信。因此,可以使用Kubernetes手動關聯和編排在多個主機上運行的容器。

3、什麼是Container Orchestration?

考慮一個應用程序有5-6個微服務的場景。現在,這些微服務被放在單獨的容器中,但如果沒有容器編排就無法進行通信。因此,由於編排意味著所有樂器在音樂中和諧共處,所以類似的容器編排意味著各個容器中的所有服務協同工作以滿足單個伺服器的需求。

4、Kubernetes如何簡化容器化部署?

由於典型應用程序將具有跨多個主機運行的容器集群,因此所有這些容器都需要相互通信。因此,要做到這一點,你需要一些能夠負載平衡,擴展和監控容器的東西。由於Kubernetes與雲無關並且可以在任何公共/私有提供商上運行,因此必須是您簡化容器化部署的選擇。

5、您對Kubernetes的集群了解多少?

Kubernetes背後的基礎是我們可以實施所需的狀態管理,我的意思是我們可以提供特定配置的集群服務,並且集群服務將在基礎架構中運行並運行該配置。

因此,正如您所看到的,部署文件將具有提供給集群服務所需的所有配置。現在,部署文件將被提供給API,然後由集群服務決定如何在環境中安排這些pod,並確保正確運行的pod數量。

因此,位於服務前面的API,工作節點和節點運行的Kubelet進程,共同構成了Kubernetes集群。

6、Kubernetes Architecture的不同組件有哪些?

Kubernetes Architecture主要有兩個組件 - 主節點和工作節點。如下圖所示,master和worker節點中包含許多內置組件。主節點具有kube-controller-manager,kube-apiserver,kube-scheler等。而工作節點具有在每個節點上運行的kubelet和kube-proxy。

7、您能否介紹一下Kubernetes中主節點的工作情況?

Kubernetes master控制容器存在的節點和節點內部。現在,這些單獨的容器包含在容器內部和每個容器內部,您可以根據配置和要求擁有不同數量的容器。

因此,如果必須部署pod,則可以使用用戶界面或命令行界面部署它們。然後,在節點上調度這些pod,並根據資源需求,將pod分配給這些節點。kube-apiserver確保在Kubernetes節點和主組件之間建立通信。

8、kube-apiserver和kube-scheler的作用是什麼?

kube -apiserver遵循橫向擴展架構,是主節點控制面板的前端。這將公開Kubernetes主節點組件的所有API,並負責在Kubernetes節點和Kubernetes主組件之間建立通信。

kube-scheler負責工作節點上工作負載的分配和管理。因此,它根據資源需求選擇最合適的節點來運行未調度的pod,並跟蹤資源利用率。它確保不在已滿的節點上調度工作負載。

9、你對Kubernetes的負載均衡器有什麼了解?

負載均衡器是暴露服務的最常見和標准方式之一。根據工作環境使用兩種類型的負載均衡器,即內部負載均衡器或外部負載均衡器。內部負載均衡器自動平衡負載並使用所需配置分配容器,而外部負載均衡器將流量從外部負載引導至後端容器。

10、Replica Set 和 Replication Controller之間有什麼區別?

Replica Set 和 Replication Controller幾乎完全相同。它們都確保在任何給定時間運行指定數量的pod副本。不同之處在於復制pod使用的選擇器。Replica Set使用基於集合的選擇器,而Replication Controller使用基於許可權的選擇器。

Equity-Based選擇器:這種類型的選擇器允許按標簽鍵和值進行過濾。因此,在外行術語中,基於Equity的選擇器將僅查找與標簽具有完全相同 短語 的pod。

示例:假設您的標簽鍵表示app = nginx,那麼,使用此選擇器,您只能查找標簽應用程序等於nginx的那些pod。

Selector-Based選擇器:此類型的選擇器允許根據一組值過濾鍵。因此,換句話說,基於Selector的選擇器將查找已在集合中提及其標簽的pod。

示例:假設您的標簽鍵在(nginx,NPS,Apache)中顯示應用程序。然後,使用此選擇器,如果您的應用程序等於任何nginx,NPS或Apache,則選擇器將其視為真實結果。

滲透攻擊的測試步驟

1.如果原始值為2,我們使用(1+1)或(3-1),程序作出相同回應,表明易受攻擊

2.如果單引號被過濾掉,我們可以用ASCII命令,使它返回字元的數字化代碼,如51-ASCII(1)

3.在URL編碼中,&和=用於鏈接名稱/值對,建立查詢字元串應當分別使用%26和%3d進行編碼

4.如查詢字元串不允許使用空格,使用+或%20編碼

5.分號被用於分割cookie自讀,使用%3d編碼


2021面試網路工程師的題目相關 文章 :

★ 關於網路工程師的面試題有哪些

★ 網路管理員面試題及答案大全

★ 最新的運維工程師面試題目整理

★ 網路測試工程師面試題及答案

★ 計算機網路面試題及參考答案

★ 網路工程師面試自我介紹範文五篇

★ 面試網路技術工程師的有哪些提問

★ 最新的it運維工程師面試題整理

B. 前端開發面試回答,你怎麼回答

我面試過很多 前端程序員,非常了解面試者和面試官的心理,我可以很負責的告訴你:

就算面試你的人說你只能拿8K,但是你完全可以通過各種方法去拿到10K以上的薪資!

面試的時候面試官都是什麼樣的心理?

大多數公司的領導都會通過給你構造一個宏偉的藍圖以及對你進行技術打擊,來讓你降低標准,因為任何一家公司都希望花最少的錢請到最NB的技術人才,其實雙方就是一個周旋的過程,看誰的情商更高一些,但往往都是面試者被面試官拿下的情況比較多。

我給面試經驗不多的 前端程序員4個建議:

1、說工資時千萬不要說自己的理想工資,在這個之上虛高一點!

假設你預期的薪資是10k,你很實在的說要10k,那麼按照常理來說,你的工資標準是一定會被往下進行打壓的。

你可以先說自己以前的工作的薪資在11K左右,現在換份工作想要13K的薪資,這個時候面試官就會想,這個人以前的工資是11k,現在給他10k他肯定是不會來的,但他還是會跟你進行壓價,但是壓價肯定都是在10k以上的,所以你和面試官談判的時候,如果他認可你,那麼你的薪資應該就會在10k-13k之間,無論最終是10k還是11k或者12k,我們的目標都已經達到了。你可以進行一番思考,最終同意對方的開價。

但是你不要跟輕易的答應,一定要拿捏一下,讓對方覺得你也在考慮,最終你選擇了他們公司,要表達出對他們公司的願景,自己中意的是職業發展,喜歡的是公司氛圍等等因素,這樣對方才會認為你是看重公司的發展,而不是因為工資。關於這點我只能說,華夏民族的人和人交流的關系是世界最微妙的,這些套路大家心知肚明,但是你用和不用還真的是兩種效果。

2、設置一個自己的心理價位

如果對方說的薪資低於這個心理價位,我們一定要果斷拒絕,保持我們的原則性,不要因為對方說了而讓你降低了自己的心理價位,這樣也會讓面試官覺得你非常的有原則,非常自信,人們都尊重這樣的人,如果你一味的做舔狗,下場會非常悲慘。

根據我十年多的IT從業經驗來看,即使是做同樣的工作,也會存在著很多工資高低差距較多的情況,所以不要掉在一棵樹上,現在社會工作機會這么多,只要有實實在在的技術,工作是很容易找的,一定要多去嘗試。

3、凸顯自己的價值,讓對方覺得你是個人才

如果之前兩點沒有達到預期成效,但你又非常看好這家公司,就該盡力爭取了;

用自己之前做成的事情說事情,最好是用數據給面試官說明,表達清楚自己為什麼要這樣的薪資,讓對方感覺到你值這么多錢,如果對方公司現在比較缺人,而且你要的薪資沒有特別離譜,還有有希望拿下的。

4、公司一般都有獎金福利可以彌補工資的欠缺

大多數人都想不到那麼遠,都是盯著眼前的薪資,但其實很多公司都有項目提成、獎金,這也是錢啊,有一些不錯的公司都是14薪往上,所以在跟公司談的時候,一定要去問他們是否有獎金、年終獎之類的福利。


除了被壓榨薪資的問題,還有以下幾點是必須要注意的!

1、項目作品

面試的時候,除了基礎的知識技術外,一個項目經驗是非常重要的,面試官會著重去問你的項目過程,所以准備好一份好的項目實戰,不只是證明你對這次面試的重視,更是證明你有能力勝任這份工作的利器。

2、去背那些常問的面試題

面試題對於以下幾個問題都會問:

·自我介紹(建議30s-60s)

·了解我們公司的基本情況嗎?

·你上家公司離職的原因是什麼?

·你自己的職業規劃是什麼?

·自我評價一下自己的優缺點?

以上問題都是大部分公司都會問到的,其實面試官只是想多了解你一些,而這些回答在網上有非常標準的答案,如果你覺得自己回答不好,你可以去網上找一些標準的答案背一下,還是非常有必要的,做到萬無一失。

3、假設面試官沒有跟你說薪資的問題,那麼我們也不要主動去提及,這樣會顯得你非常的著急,最好是先拿到offer之後再去談薪資,這樣對於我們來說是非常有利的,經驗之談。

4、面試的時候不要對方問一句你就答一句,你一定要明白面試的本質是什麼,在短時間內展示你的才華,方方面面的才能,給對方留下一個好的印象。

5、面試的過程中,是你展現的時候,所以80%的時間都應該你來主導,你來展示自己的才能,一定要非常著重的表現自己。

6、在回答面試官時,換位思考幾秒鍾:

·他為什麼要問這個問題?

·他想知道什麼答案?

·他想通過這個答案判斷出什麼?

所謂知己知彼才能百戰不殆,你一定要換位思考對方問的問題,想要知道什麼,從你的回答中他是否可以得到他想要的答案,所以面試是一門非常深的學問,人與人之間心理的博弈。

總結:

以上全部都是面試技巧方面,這屬於細活,而真正掌握技術才是根本,如果你沒有掌握良好的技術,技巧也幫助不了你找到一份工作,當你的技術達標,在加上好的面試技巧,就是如虎添翼,工作隨便你選擇。

常在這里回答問題,熱愛技術,喜歡幫別人解答行業技術問題和行業知識。

如果大家對於學習前端有任何不懂的可以隨時來問我,我給你提供一個非常不錯的前端交流學習qun:前面是二九六,中間是二一二,後面是五六二。有問題就在裡面問我,這樣你可以少走很多彎路,做起來有效率,記得多跟有經驗的人交流,別閉門造車。如果沒有比較好的教程,也可以管我要。

C. 應屆畢業生web前端面試自我介紹_前端開發工程師面試個人介紹

WEB前端是現在it行業是一件傷腦力和高報酬的工作,應屆 畢業 生去應聘此工作,最好能提前准備好 自我介紹 的說辭。以下是我為你整理的應屆畢業生web前端 面試 自我介紹,希望大家喜歡。

應屆畢業生web前端面試自我介紹篇1

考官好,我是計算機專業的面試者XXX,我此次應聘的職位是IT行業的軟體工程師,這份工作不僅與我的專業對口,同時也是我的特長與興趣所在。現在我就從以下三個方面介紹自己:

1)學習能力:我有較強的科研能力,能熟練的進行LINUX操作,並能使用VB,DELPHI等語言編程。能運用網頁三劍客Photoshop軟體進行相關工作。

2)實踐能力:我的專長是軟體開發,我希望能從事這方面的工作 經驗 ,並且我曾經發過多個系統,如人事檔案管理系統,工資管理系統等等。

3)交際能力:我的性格沉穩,能坐得住,對IT行業的工作,具有非常好的適應能力,而且為人謙和,具有很強的組織和協調能力,富有的事業心和責任感使我能夠面對任何困難和挑戰。

從以上的簡單自我介紹,我希望公司能給我一個展示自己能力的機會,讓我我可以學以致用,同時我也很欣賞XX公司的 企業 文化 與工作環境。我願意成為企業一員,為企業的發展貢獻自己的一份力量。我的職業生涯目標是,做一個既懂技術,又懂業務的復合型人才。

應屆畢業生web前端面試自我介紹篇2

本人熱衷計算機軟體開發行業,學習能力強,適應能力強,有責任心,擁有團隊合作開發精神,亦能獨立完成任務。現任某某軟體公司開發部經理,4年軟體開發管理經驗,熟練掌握delphi及c#.net兩門開發語言(winform),interbase及sqlserver資料庫,vss源代碼管理,具有良好的編程習慣和風格(xml標注,gui+設計等等),熟悉軟體架構及測試。本人有意向.net軟體工程師及項目管理方向發展,盼望與伯樂攜手共創事業!

應屆畢業生web前端面試自我介紹篇3

回首三年的大學校園生活生涯和 社會實踐 生活,有渴望、有追求、有成功也有失敗,我孜孜不倦,不斷地挑戰自我,充實自己,為實現人生的價值打下堅實的基礎。

在思想品德上,本人有良好道德修養,並有堅定的政治方向,我積極地向黨組織靠攏,使我對我們黨有可更為深刻的認識,並參加了入黨積極分子培訓班”的培訓。本人遵紀守法、愛護公共財產、關心和幫助他人,並以務實求真的精神熱心參與學校的公益宣傳和愛國活動。

在學習上,我熱愛自己的專業,還利用課余時間專修計算機專業知識,使我能輕松操作各種網路和辦公軟體。曾多次獲得學金,在書法和 體育運動 都獲得好成績。英語、電腦、普通話等方面的等級考試已達標。除了在專業知識方面精益求精外,平時我還涉獵了大量網路編程、網路管理與維護、網頁設計等知識。並且相信在以後理論與實際結合當中,能有更大提高。

在工作上,對工作熱情,任勞任怨,責任心強,具有良好的組織交際能力,和同學團結一致,注重配合其他學生幹部出色完成各項工作,得到了大家的一致好評。

在生活上,我最大的特點是誠實守信,熱心待人,勇於挑戰自我,時間觀念強,有著良好的生活習慣和正派作風。由於平易近人待人友好,所以一直以來與人相處甚是融洽,連續擔任了分院的乒協的秘書長一職。有廣泛 愛好 的我特別擅長於網頁設計和網站管理與維護方面。曾獨立完成一個中型網站的設計,以及大型綜合網站的策劃與修改工作。

身為平面設計專業的學生,我在修好學業的同時也注重於社會實踐。本著學以致用,實踐結合理論發揮。暑假期間我到XX網吧等大型網吧里工作,管理經驗與軟硬體維護得到了極大的積累。

三年的大學生活,使自己的知識水平、思想境界、工作能力等方面都邁上了一個新的台階。在這即將揮手告別美好大學生活、踏上社會征途的時候,我整軍待發,將以飽滿的熱情、堅定的信心、高度的責任感去迎接新的挑戰,攀登新的高峰。

>>>下一頁更多精彩“Web前端 面試題 目”

D. jQuery $(window).scroll事件出現問題

web前端開發 20 年變遷史,讓我們來看看這20年裡,web前端究竟經歷了哪些變革,web前端在這20年裡又有哪些突破和成就,怎麼樣看待這20年的web前端開發!

1990年,第一個Web瀏覽器誕生,而WWW的誕生直接拉開前端史的序幕。

從靜態頁面到Java,從依賴後端到自主開發,前端開發者從不被重視的「頁面仔」逆襲為如今很多前端工程師的薪資比後端還高,從前端技術由國外開發者主導到如今國內自主產生的小程序技術,我們走了20年。

了解web前端:http://www.cnite.cn/qianan/

作者 | 司徒正美

責編 | 伍杏玲

1990 年,第一個Web瀏覽器的誕生;1991 年,WWW誕生,這標志著前端技術的開始。

在這將近20年的前端發展史中,我們經歷了從最早的純靜態頁面,到Java跨時代的誕生;從PC端到移動端;從依賴後端到前端可自由打包開發;從早期的網景Navigator瀏覽器到現在各家瀏覽器百花齊放……

我們經歷了前端的洪荒時代、Prototype時代、jQuery時代 、後jQuery時期、三大框架割據時代,這其中均是由國外開發者主導,直到如今的小程序時代,才是中國開發者獨創的。

這是漫長的技術儲備下的成果,最終促成了良好的技術成長收獲。期間的前端發展之路,崎嶇艱難:

洪荒時代(1990~1994年)

在1990~1994年期間,前端界發生的大事有:WWW(World Wide Web)的誕生、瀏覽器的誕生、Java的誕生,沒有專業的前端,頁面全是由後端開發的。

1990年,萬維網之父蒂姆·伯納斯-李(Tim Berners-Lee)在NeXT電腦上發明了第一個Web瀏覽器。

1991年8月6日,Tim在alt.hypertext新聞組貼出了一份關於World Wide Web的簡單摘要,這標志了Web頁面在Internet上的首次登場。

最早的Web主要被一幫科學家們用來共享和傳遞信息,全世界的Web伺服器也就幾十台。由於僅是用來傳遞信息,從可視化方式或從傳遞數量上看,僅比電報強一點點。

當時還沒有Java,用的是純靜態的頁面。

1993年,CGI(Common Gateway Interface)出現了,人們可以在後端動態生成頁面。

Perl由於跨操作系統和易於修改的特性成為CGI的主要編寫語言。當然,CGI也支持其他支持標准輸入輸出和環境變數的語言編寫,比如Shell腳本、C/C++語言,只要符合介面標准即可。

但顯然,頁面的內容更新完全由後端生成,這帶來一個明顯的缺憾:每次更新都要整頁刷新,加上早期的網速情況,這個操作是非常慢的。因此針對這情況,人們從多方面著手改進:編寫語言的升級、瀏覽器的升級、HTML的升級。

1994年,網景公司成立,發布了第一款商業瀏覽器Navigator。自從這款瀏覽器面世後,微軟推出IE瀏覽器。雖說有競爭才有發展,但這也埋下了Java分裂的種子。

(1994 年,網景瀏覽器的截圖)

同年,PHP誕生。PHP能將動態的內容嵌入到HTML中,提升了編寫頁面的效率與可讀性,其性能也比一般的CGI高。PHP的界定符、循環語句等的發明,深刻影響了後來的ASP、JSP,乃致後來的Java前端模板引擎。

1994年10月,W3C小組也成立了,他們負責HTML的發展路徑,其宗旨是通過促進通用協議的發展。

待這一切就緒後, Java於1995年誕生了。

傳聞,網景工程師布蘭登·艾克(Brendan Eich)只花了10天時間設計出 Java 語言,近乎上帝七日創造世界那麼高效。但也因為工期太短的緣故,導致許多瑕疵,因此一直被正統傳序員所嫌棄,直到Ajax的出世,才讓人們找到理由忍受它的畸形。早期的瀏覽器都配有一個選項,用來禁止Java語言運行。

Java主要語言特徵[1]:

借鑒C語言的基本語法;

借鑒Java語言的數據類型和內存管理;

借鑒Scheme語言,將函數提升到"第一等公民"(first-class citizen)的地位;

借鑒Self語言,使用基於原型(Prototype)的繼承機制。

時下,靜態語言大行其道,類與介面被證明是構建大工程的最佳實踐,人們想不出沒有類的語言如何編寫業務。因此當時的微軟也打造了另一門運行於瀏覽器的語言——VB。

如果繼續細探Java的能力,你會發現它早期真的非常空洞,一門沒有靈魂的語言,沒有包管理機制,也沒有像Java與C++那樣的打輔助用的SDK,內置的方法也屈指可數。比如說數組方法,早期只有push、pop、shift、unshift、splice、slice、sort、reverse、concat、join等操作。動態調用方面,Function的apply、call操作還沒有出現!

早年的偷懶,導致後來不得不補課:到了2019年,數組上的原型方法,是原來3倍。

除了方法缺乏,還有性能問題,大家討論用eval還是Function,用哪種循環方式,用parseInit還是~~,就是為了那一點點的性能提升。例如jsperf.com,就是一個專門研究Java性能的網站。

因此Java誕生後,其兩大任務就是完善語言特性與提高性能。這兩座大山分別由著名的prototype.js與jQuery來搬掉。

在搬掉之前,前端界還有一個曲折實踐——第一次瀏覽器戰爭,並由其發展而來UA嗅深技術。

瀏覽器戰爭(1994~2005年)

瀏覽器戰爭一共打了三場,IE瀏覽器vs網景瀏覽器、IE瀏覽vs火狐瀏覽器、IE瀏覽器vs谷歌瀏覽器。

第一場瀏覽器之戰打得尤其激烈。

微軟的IE瀏覽器發布於1994年,但此時的網景已經佔領絕對優勢。微軟在落後的情況,反編譯Netscape的源碼,推出IE與J。但是由於Bug非常多,大家不願意為IE開發網站,因此發掘出UA,專門過濾掉IE瀏覽器。

UA即Navigator.userAgent ,是用一個字元串來記錄用戶當前運行在什麼操作系統與瀏覽器中。當前IE3的UA是這樣的:

Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)

程序判斷UA信息,假如發現當前運行的環境是IE瀏覽器的話,就提示用戶用網景瀏覽器打開。因此微軟不得不讓自己的UA盡量偽裝成網景的UA,欺騙用於檢測UA的腳本,達到IE瀏覽器可以跑這些網站的目的。

最終,第一次瀏覽器之戰以微軟勝利,Netscape被美國在線收購,而落下帷幕。

第一次瀏覽器戰爭年代非常久遠了,但其結局告訴我們,其實技術強弱並不重要。那時技術保護並沒有這么重視,否則微軟的行為可能會被告(谷歌的openSDK僅抄襲幾十行代碼,被Oracle公司訴訟賠88億)。

第一次瀏覽器戰爭帶來了一個問題:盡管當時有ECMA-262(Java規範文檔)與W3C(HTML與CSS的規範文檔),微軟卻沒有照規范來實現Java、HTML與CSS,導致前端兼容問題的誕生。所以CSS Hack、瀏覽器判定、特性偵測,這些技術就應運而生。

這個時代最著名的人物是Dean Edwrad,他是最早的近乎完美解決事件綁定的兼容性大神,其addEvent()內置於jQuery最早的版本中。jQuery的作者John Resig看到其超強的技藝,最後放棄推出大而全的框架,專攻選擇器引擎。

Dean Edwrad的IE7.js、IE8.js是早期處理瀏覽器兼容的良葯,可以說是一切Polyfill[2]的起源。他寫了大量的Hack, 比如在IE如何測量元素的寬高,許多操作DOM的兼容。

這時期太早,中國基本沒有參與這次瀏覽器戰爭。

Prototype時期(2005~2009年)

Prototype是Sam Stephenson寫的一個非常優雅的Java基礎類庫。他是Ruby的大牛,因此Prototype的許多方法名都是來自Ruby界。

Sam Stephenson最大的貢獻是發掘了Prototype與創造了Function.prototype.bind,在數組上也寫了一大堆方法,其中許多被標准化了。

同期的MooTools也是Prototype的方法,當時,大家還在前端論壇為這個爭吵。還有前端工程師喜歡在當時很出名的前端聚集地——藍色理想(現淪為設計師網站)上,討論如何扒腳本、分享彈層、日歷等小組件的技術,這在當時已經是非常了不起的事。

Prototype當時還解決兩大問題:動畫特效與Ajax請求。動畫特效是由aculous提供,我們現在所熟知的各種緩動函數,各種特效的命名與大致的運行形態,都是由aculous確定下來的。

在早期,谷歌就開始使用iframe實現頁面刷新。

2005 年2月,傑西·詹姆士·賈瑞特(JesseJamesGarrett)發表了一篇名為《Ajax:一種Web應用程序開發的新方法》的文章後,Ajax被挖掘出,大家才開始重視起這技術的應用。

例如IE下的ActiveXObject("Microsoft.XMLHTTP"),這是IE創建Ajax引擎的。假如當時有工程師開發出一個核心庫,如果不包含Ajax的封裝,便不好意思發布出來。

一些Ajax書藉

當時前端開發模式是選擇一個核心庫,找一些組件,或者扒別人的腳本進行開發

Prototype的源碼挺好理解的,代碼量也少,只有5000多行,裡面的每個方法也很易扒出來,因此一些大公司總有高手能創造自己的Prototype。

但前端開發還是離不開後端,因為前端沒有模塊機制,當時我們需要用PHP進行打包。打包是雅虎34條軍規之一,可以減少請求數。打包的同時也可以進行混淆,防止代碼小偷來窺探。

N年前,前端面試必問的題目:

模塊化的雛型, 在注釋中標注它的依賴

這個時期,還沒有前後端分離,可國內一些帶著深厚後端背景的高手已經入場。

jQuery 時期(2009~2012年)

2006年,jQuery發布,它當時的競爭對手很多:Dojo、Prototype、ExtJS、MooTools。

所以那時jQuery的宣傳口號僅能說是它的性能上升了100%、200%、300%。直到2009年,Sizzle選擇器引擎研發成功,jQuery才取得壓倒性的優勢。

當時前端界首要面對的是瀏覽器兼容性問題,jQuery在處理DOM兼容上真是知微見著, 發掘出大量的DOM/BOM兼容方案(例如Dean Edwrad的addEvent(), IE的px轉換方案,domReady的doScroll方案,globalEval的兼容方案等)

jQuery也打破了前端開發者的編程思維,之前是按照後端的開發思路來的:做一個業務就先封裝一個類,有了這個類後,再想辦法傳入一個DOM,然後再通過類方法操作DOM。而jQuery是DOM為中心,開發者可以選一個或多個DOM,變成jQuery對象,然後進行鏈式操作。當時為了改變用戶的思維,國內的高手寫了不少文章來引導大家。

其次,開發者們已開始注重前後端分離,並要求不能污染Object原型對象,不能污染window全局變數。這樣,jQuery只佔用兩個全局變數。

再次,jQuery非常輕量級,採用Dean Edwards編寫的Packer壓縮後, 大小不到30KB。並且裡面實現得非常精妙,以令人瞠目的手段解決各種兼容痼疾。

為了學習這些技巧,高手們翻了一遍遍jQuery的源碼,所以網上有大量關於其源碼詳解的書藉。甚至前端工程師在面試時也會被考到jQuery的源碼實現,這樣,jQuery在國內更加流行。

jQuery的流行間接帶來以下的發展:

促使人們對CSS1~CSS3選擇器的學習

促進了瀏覽器原生選擇器引擎document.querySelectorAll、Element.matches的誕生

提高人們對domReady(DOMContentLoaded事件)的認識

促進了Promise與requestAnimateFrame 的誕生

最重要的是降低前端門檻,讓更多人進入這行業,前端工程師的隊伍越來越壯大。

這樣的話,不斷涌現出優秀的工程師,他們創造了大量jQuery插件與UI庫。為後jQuery時代,人們研發前端模塊載入、統一非同步機制、 打造大型MVC框架, 甚至伸向後端,接管打包腳本而發明Node.js,來騰出大量時間。

這個時期涌現了大量jQuery-like的庫,其中最著名的是Zepto.js。Zepto的出現也標志著我們進入移動互聯網時代。那時配套出的著名庫還有iScroll、fastclick、Lazy Load、Modernizr、fullPage。

jQuery的鏈式操作風麾一時,也帶來許多問題,當Ajax出現依賴時,就不可避免就出現回調地獄。因此針對這方面的討論,誕生Deffered與Promise。有關回調地獄的討論,在後來講Node.js非同步處理時,將會再一次熱烈地討論。因此太陽下沒有新事,我們總是遇到相似的問題。

jQuery如此多的選擇器也法維護,隨著越來越多人涌現這行業,頁面的交互也越來越復雜,從Web Page向Web App進化,新的趨勢帶來新的開發方式。

後jQuery時期(2012~2016年)

這時期以RequireJS的誕生為起點,以RN的出現結束。同時解決了前端的模塊定義問題,模塊打包問題(通過Node.js),Java不依靠其他語言創造了一套自己的工具鏈。

jQuery的出現讓前端工程師開發更加輕松,假如工程師想實現一個功能,現搜索出一個jQuery插件來實現。那時候大家在前端網站就整天介紹jQuery插件,很少討論一些底層的實現。

前端工程師通常編寫一個頁面,會引入十多個乃至幾十個jQuery插件,頁面上塞滿了標簽。眾所周知,瀏覽器是單線程,的載入,會影響到頁面的解析與呈現,導致著名的白屏問題(當時前端用力過勐,body中的所有東西都是動態生成的)。

jQuery另一個問題是全局污染,由於插件的質量問題,或者開發的素質問題,這已經是IIEF模塊或命名空間等傳統手段無法解決了。

於是一些優秀的前端工程師們決定從取經後端,引入模塊機制。早期,這種模塊機制在Dojo、EXT這些框架中都是內置的,但是顯然說服不了另一個框架的用戶用對方的模塊機制,於是有人立志要統一這種模塊定義方式,成立了CommonJS。

但不料,CommonJS內部也有派系,誰也說不服對方。終於有一個人忍不住自己獨立開發出RequireJS,其模塊規范即為AMD。 AMD最大的優勢是它支持各種插件,且簡單明了,並且提供shim機制載入以非AMD規范編寫的Java代碼。

但在CommonJS誕生很久一段時間後,在後端的Node.js出現時才有用武之地。而國內,則流行另一種規范風格,背靠阿里的大旗,有人推出了SeaJS,號稱其規范為CMD。其實無論國內還是國外,都產生許多模塊載入器,但最後還是被淘汰了,規范一個就夠了,不宜過多。

但是前端工程師的創造力就是這么驚人,從無到有,再到泛濫成災,一年足矣。這可能與前端代碼是開源的原因。最後有人統一了前兩種規范(AMD、Node.js模塊),同時還支持老式的「全局」變數規范。

自此,Java開發模式煥然一身了,大家只要在代碼外麵包一層就可以全世界通用,不用提心全局污染的問題。

其次,jQuery開發者需要解決大段HTML的生成問題,之前jQuery有$.html, $.append, $before等方法,可以將一大段符合HTML結構的字元串轉換成DOM再插入到頁面上。

但現在我們想分離出來,讓HTML獨立到不同的文件中,然後插數據,這就是前端模板。前端模板的情況與模板規范一樣,從沒有到多如芝麻的境地。這時篩選一個好用且性能高的模板是一件讓前端工程師頭疼的問題,那時網上有許多評測文章來介紹它們。

前端模板技術可以用一個公式來描述:

HTML = template(vars)

有了前端模板後,又誕生了前端路由,基於它們,人們發明一個新詞彙SPA。作為這個時代的尾聲,來自Ruby界的高手Ryan Dahl發明了Node.js。 前端工程師們歡唿:可以不用傳統的後端就能自己寫一個網站了!

Node.js的發展就不詳述上,很快它就冒出海量模塊、路由、狀態管理、資料庫、MVC框架都有了。這時,前端就缺自己的MVC框架了。Node.js轉眼就十歲生日了。

著名的MEAN架構,是Java全棧開發的先鋒。當時涌現了大量的MVC與MVVM框架。最先火起來的是Backbone.js,使用純正的MVC模型, Backbone.js是jQuery最後的支持者,它強依賴於jQuery。

Backbone.js的作者還搞了另一套編譯語言Coffee, 裡面的箭頭函數、類機制、 解構賦值等語法糖都深深影響了後來的ES6。

接著下來是谷歌的Angular,微軟的Knockout.js,蘋果的Ember.js這三個MVVM框架,MVVM就是比MVC多一個數據綁定功能,但這數據綁定功能是非常難實現。Knockout是使用函數代替屬性的技巧實現,它的設計影響到後來的Mobx;Ember.js是基於Object.defineProperty;Angular是將函數體轉譯成setter()、getter()函數。

大公司的介入,對個人開發者影響是很大,畢竟大家都愛迷信大公司,因此局面一下子就穩定下來。大公司還帶來了全新的開發模式,早期都是找一個核心庫,再搜刮一大堆插件,然後自己寫業務代碼,最後後端打包。

大公司將後端開發經驗挪用過來,用Node.js開發了一套CLI,裡麵包含了腳手架生成, 打包腳本、語法風格檢測、環境變數插入,代碼復雜度檢測,代碼提交時自動跑單元測試, 圖片與JS壓縮等功能。ESLint、JSLint、JSHint、CSS Lint、 htmllint等就是那時期出現的。

但CLI的出現導致了前端的分裂,以前大家都使用jQuery,但自CLI幫你建好項目的那一刻起,就將你劃歸某一子陣營,你是Angular?Ember.js?還是jQuery?對了,jQuery沒有大公司支撐的陣營被快速邊緣化。

對於個人開發者,他們是沒有能力開發這么功能完備的CLI,於是出現了Code Climate、Travis CI、CircleCI這樣的平台。它們的出現標志著jQuery小作坊時代的終結了。

CircleCI官網

前端開發者也出現分化:有些人轉向後端,出現了CNode的門戶網站。另外一些人開始搞工程化。一時間出現上百種構建工具,出名的有Grunt、Gulp、FIS3、webpack、 Rollup、npm-。

你方唱罷我登場,這些構建工具均會經歷時代的考驗,如大浪淘沙般,最後存活得僅為寥寥。

因此在這場工程化得盛宴中,註定把許多低層次的jQueryer淘汰掉。jQueryer在空閑之餘培育出的前端模板、前端路由、MVC框架、模塊載入器、Node.js構建工具,卻不料最終成為它自己的挖墓人。

jQuery的時代一去不返了,再沒有人關心拖堂拖了N年的Bootstrap 4終於發布了,沒有人知道jQuery3.5的瘦身計劃,也沒有人問jQuery的源碼,漸漸地,大家不關注jQuery的工具鏈了。

三大框架割據時代(2016~至今)

React是突然爆發的,雖然它是與Angular是同時期發布,但因為JSX怪異的語法讓人們遠離它。此時已經進入移動互聯網的中期,大公司都有自己的App,或者基於原生,或者基於Hybird。

Hybird是用WebView載入一個網站或一個SPA。

由於原生成本太貴,需要招兩套班子,一套安卓的,一套iOS的;而Hybird則一直存在性能問題。於是在2017年,Facebook推出了React Native(RN)。

RN的性能不比原生差多少,比Hybird能好些, 其次使用JSX開發界面比原生的快; RN 只需要低成本的前端開發人員就能上手了。中國國內經過瀑布流(圖片導購)、團購、P2P、區塊鏈等全新商業模式的開發浪潮後,前端人員數量大增。現在,他們只要稍微培訓就可以轉型為App開發。

在開發RN的過程中,人們開始了解React一系列的優勝之處。比如JSX背後的虛擬DOM技術,雖然事實證明虛擬DOM不會帶來性能的巨大優勢,但保證了你怎麼寫其性能不會太差。

React為了引入JSX,必須需要引入編譯,這又間接促成Babel與webpack的壯大。尤其是Babel, 讓我們在很舊的瀏覽器中使用非常新的語法,甚至一些還沒有定案的語法。React從14升級到React 15,強制使用class語法,讓這個推了好久的語法糖終於大規模落地。

之前如果Java想使用類,只能自己模擬類,由於沒有官方的實現,只能任由各優秀工程師發揮。而普通人想用好類,需要了解很復雜的Prototype機制。

現在只用幾個新關鍵字就可以得到這一切。

如果對比Python 2與Python 3間的升級,Java實在太辛運了!針對CSS邏輯功能過弱的問題,我們也有了新的解決方案:Less、Sass、PostCSS與CSS Moles!

谷歌在發布Angular的同時,也發布了一個叫Polymer的框架,那時它想推廣一種叫Web Components的瀏覽器自定義組件技術。這其實是微軟在IE5就玩剩的HTC技術的升級版。雖然它沒有火起來,但它將、Style、Template三種內容混在一個文件的設計,啟發一個留美華人,再結合當時的Backbone.js、Angular等設計,Vue.js橫空出世。目前,這是國人最成功的前端框架了。

除此之外,國人也弄了好幾套迷你React框架與迷你Vue框架。這有點像jQuery時代,大家瘋狂做迷你jQuery框架一樣。

總的來說,最有創造力的是React團隊,做出狀態管理器、CSS-in-JS、Flow靜態類型檢查、devTool、Fetch、前後端同構、Fiber、suspend、並發渲染等名詞層出不窮。其中,狀態管理器擁有上百套, CSS-in-JS也擁有上百套,Flow則讓前端嘗鮮到介面編程的好處,間接推動發Type發展。這三大框架無法比拼個一二出來:Vue.js有國人的擁躉,React與Angular有大公司光環。

三大框架的纏斗從PC領域擴展到移動端:React有RN, Vue.js有Weex,Angular有ionic。想當年我們為了兼容瀏覽器,攢了一大堆瀏覽器偵探的Hack,全部貶值為垃圾了。

在這時期,一種全新的後端渲染崛起,稱之為前後同構,既擁有早期SEO的功效,又能復用大量的業務邏輯。隨著國內移動互聯網的發展,獲客成本提高,各種有效的商業模式都進入紅海,但只有頭部用戶能賺到錢,馬太效應越來越嚴重,純粹的技術解決方案已經無法滿足商業訴求了。

小程序時代(2017~至今)

小程序時代與三大框架的時代幾乎重合,但是出自不同一批人,決戰的平台也不一樣。

一直以來前端技術都是由國外開發者主導的,即便是Vue.js也是由美國的華人創造的。但是國內外的技術更新是存在代差,國內通常延期兩三年,這個時間差可以讓一些模仿者得以生存(如SeaJS、FIS、avalon)。但隨著封閉的時間越來越長,國內肯會也會誕生自己的轉有物種。小程序就是其中之一。

小程序的出現有著明顯的商業訴求,因為馬太效應,一些超大流量的App誕生了。這些大流量App集成了許多功能,但顯然公司再多員工,也無法所有功能全是自己弄,於是產生小程序這種「外包」的手段。

小程序是國內前端技術的一次厚積薄發:底層運行的迷你React的虛擬DOM, 內置組件是使用Web Component,API來源於Hybird的橋方法,打包使用webpack,調試台是Chrome console的簡化版, WXML、WXSS的語法高亮也應該是webpack或VS Code的插件, 模塊機制是Node.js的CommonJS……其中最值得一提的是微信開發者工具,以後開發者工具成了各種小程序/快應用的標配。

但微信小程序一開始的復用能力非常弱,沒有類繼承,不能使用npm, 不支持Less、Sass, 因此基於它的轉譯框架就應運而生。第一代譯轉框架是wept、WePY、mpvue,它們無一例外是Vue風格的。因為WXML的模板指令與Vue非常相似,只是改一下就能兼容。當時也出現了一個MINA的框架,聽說是微信團隊開發的,可以單獨架起Node.js後端,讓小程序運於瀏覽器中,方便做單元測試。

第一代轉譯框架主要是基於Template標簽實現組件機制,自定義組件機制是很後的事了。這就造成了利用第一代轉譯框架編寫的小程序項目很難升級。那時候是個人開發者的天堂,這些框架都是某一大牛獨力開發的。

第二代轉譯框架是大公司主導的,因為需要兼容的小程序越來越多,網路、支付寶、位元組跳動、小米、華為等公司都推出自己的小程序和快應用。個人開發者很難憑個人力量去開發轉譯框架,這時候各大團隊紛紛推出自己的輪子:如京東的Taro、滴滴的Chameleon網易的Megalo、去哪兒網的nanachi、網路的Okam等。

在這個時期,Angular顯然落伍了,一是Angular升級太快,國內的高手還沒有消化好,新一版的Angular又發布了。二是國內缺乏迷你Angular的輪子,導致龐大的Angular無法塞進小程序中。

國外谷歌發布了Flutter跨平台轉譯框架,但是它的編寫語言是Dart,它也無法跨界到小程序中。

未來不僅國內一線巨頭爭奪小程序,二三線的巨頭也可能會加入小程序的混戰中,例如有人稱360也在打造自己的小程序平台。小程序這種新的流量變現模式深刻地影響了國內的互聯網布局。

結語

當初Java被誤解為最糟糕的語言,時至今日它是最流行的語言:GitHub 60%的開源項目都是與Java有關。

以前,從事這行業的人被稱為頁面仔,現在他們的起薪有的比PHP、JAVA、C++等後端還高。甚至有人說,「任何可以使用Java來編寫的應用,最終會由Java編寫。」

我們前端開發者觸及的領域不僅僅是瀏覽器,還可以做後端,做桌面端,做手機端,做小程序端,前端開發者的性價比越來越高,越來越重要。可謂是時代造英雄。

筆者有幸成為前端開發者大隊伍中的一員,也堅信我們前端開發者以後的路會越來越寬,越來越好走。

資料:

[1]:計算機和編程語言的發展歷史

[2]:Polyfill是一塊代碼(通常是 Web 上的 Java),用來為舊瀏覽器提供它沒有原生支持的較新的功能。

作者簡介:司徒正美,擁有十年純前端經驗,著有《Java框架設計》一書,去哪兒網公共技術部前端架構師。愛好開源,擁有mass、Avalon、nanachi等前端框架。目前在主導公司的小程序、快應用的研發項目。


  • 本文鏈接:http://www.cnite.cn/qianan/share/20198308.html

E. 你要面試一個程序員,應該問他什麼問題

首先面試程序員分有沒有經驗
面試沒有經驗的程序員就隨便問問點ssm,ssh五大框架問題,多線程什麼的,再問問是否會點前端技術
有經驗就看看他的簡歷,問他簡歷項目上的問題,可以圍繞著簡歷上的項目問,通過他的回答涉及到的技術點之類的,拓展出去問其他的

F. web前端工程師面試自我介紹_web前端工程師面試自我介紹怎麼說

自我介紹 ,就是自己將自己介紹給他人或眾人的一種介紹方式。那麼web前端工程師 面試 時自我介紹應該怎麼說?以下是我為您整理的web前端工程師 面試自我介紹 內容,希望能幫到你。

web前端工程師面試自我介紹第一篇

我喜歡 籃球 和 乒乓球 ,曾擔任大學校籃球隊隊員。在籃球隊中深刻體會到在大家共同努力下擊敗對手的成就感!

對於計算機有著狂熱的喜愛,雖掌握軟體眾多,但對編程情有獨鍾!在每一次解決了問題後都有一種成就感!我喜歡這種感覺,讓我能沉迷於我的代碼的世界中!

愛好 程序設計,喜歡開發自已的小型產品,追求技術上的滿足感;穩固的架構,健壯的代碼,團結的合作,是我的不懈追求。

有良好的編程習慣,以及程序錯誤控制和解決能力,我愛程序員這個崗位,當每天敲著代碼,聽著音樂,是很快樂的

用心工作,用心生活!我可能不是最好的,最合適的,我覺得我是最有潛力的!2016,一起加油!

web前端工程師面試自我介紹第二篇(英文)

good morning, my name is jack, it is really a great honor to have this opportunity for a interview, i would like to answer whatever you may raise, and i hope i can make a good performance today, eventually enroll in this prestigious university in september. now i will introce myself briefly,i am 21 years old,born in heilongjiang province ,northeast of china,and i am curruently a senior student at beijing xx uni.my major is packaging engineering.and i will receive my bachelor degree after my graation in june.in the past 4 years,i spend most of my time on study,i have passed cet4/6 with an ease. and i have acquired basic knowledge

of packaging and publishing both in theory and in practice. besides, i have attend several packaging exhibition hold in beijing, this is our advantage study here, i have taken a tour to some big factory and company. through these i have a deeply understanding of domestic packaging instry. compared to developed countries such as us, unfortunately, although we have made extraordinary progress since 1978,our packaging instry are still underdeveloped, mess, unstable, the situation of employees in this field are awkard. but i have full confidence in a bright future if only our economy can keep the growth pace still. i guess you maybe interested in the reason itch to law, and what is my plan ring graate study life, i would like to tell you that pursue law is one of my lifelong goal,i like my major packaging and i won't give up,if i can pursue my master degree here i will combine law with my former ecation. i will work hard in thesefields ,patent ,trademark, right, on the base of my years study in department of p&p, my character? i cannot describe it well, but i know i am optimistic and confident. sometimes i prefer to stay alone, reading, listening to music, but i am not lonely, i like to chat with my classmates, almost talk everything ,my favorite pastime is valleyball,playing cards or surf online. through college life,i learn how to balance between study and entertainment. by the way, i was a actor of our amazing drama club. i had a few glorious memory on stage. that is my pride.

web前端工程師面試自我介紹第三篇(英文)

my name is zhao wanjun. wanjun is my given name. wan means sweet and jun means person, so my name means a sweet-tempered girl. i actually am! but you can call me june, for your convenience, j-u-n-e, IT's similar to my chinese name jun. i am from enping, a small cITy in the southwest of guangdong province, near hongkong and macao. maybe you have never been there before, IT's well known for the hot springs there.

in 2014, i got the highest score in the college entrance examinations in my cITy and entered zhongshan universITy. my major is computer science. my gpa ranks in the top 40% among all students, but i have stronger c++ programming skills than many others. also, i was the first one to learn java in my class.

i was chosen by a teacher of mine to participate in his project. the project was about a lan chat room, and i developed the instant messaging system in IT. i was the only female student in this project team.

besides study and the project, i worked in the student union for two years, first year as a member, next year promoted to be the general secretary. my colleagues describe me as a reliable and considerate person.

ibm is top on my job hunting list for of the reasons you hear every day. i look forward to joining a famous company as IT means good training, good pay, and good people to work wITh, just like you gentlemen!

technical support engineer is my ideal job because i have both a technical background and the abilITy to deal wITh clients. also, traveling isn’t a problem although i am a woman.

>>>下一頁更多精彩「求 職自我 介紹」

G. 昭通電腦培訓學校告訴你前端面試需要掌握哪些html問題

程序員技術面試是永遠都不會缺席的,所以為了能夠讓大家順利的通過面試,我們今天就一起來了解一下,與html相關的一些面試題都有哪些。

1、什麼是盒子模型?


有些面試官會問你對盒子模型的理解,在我們平時看到的網頁中,內部的每一個標簽元素它都是有幾個部分構成的:內容(content)、外邊距(margin)、內邊距(padding)、邊框(border),四個部分組成,當你說完這些面試官是不會滿意這個答案的,因為還有一個重點(IE盒模型和標准盒模型的區別)———IE盒模型的content包括border、padding


本文由@IT·平頭哥聯盟-席填坑官?蘇南分享


2、頁面導入樣式時有幾種方法,它們之間有區別?


link標簽引入,也是當下用的多的一種方式,它屬於XHTML標簽,除了能載入css外,還能定義rel、type、media等屬性;


@import引入,@import是CSS提供的,只能用於載入CSS;


style嵌入方式引入,減少頁面請求(優點),但只會對當前頁面有效,無法復用、會導致代碼冗餘,不利於項目維護(缺點),此方式一般只會項目主站頁使用(騰訊、淘寶、網易、搜狐)等大型網站主頁,之前有看到過都是這種方式,但後來有些也舍棄了


小結:link頁面被載入的時,link會同時被載入,而@import引用的CSS會等到頁面被載入完再載入,且link是XHTML標簽,無兼容問題;link支持動態js去控制DOM節點去改變樣式,而@import不支持,


3、簡單講述一下塊元素、內聯元素、空元素有哪些,它們之間的區別?


行內元素有:a、b、span、img、input、select、textarea、em、img、strong(強調的語氣);


塊級元素有:ul、ol、li、dl、dt、dd、h1、h2、h3、h4p、section、div、form等;


空元素:inputtype="hidden"/>、br>、hr>、link>、meta>;


小結:塊元素總是獨佔一行,margin對內聯元素上下不起作用;


4、說說cookies,sessionStorage、localStorage你對它們的理解?


cookie是網站為了標示用戶身份而儲存在用戶本地終端上的數據(通常經過加密),cookie數據始終在同源的http請求中攜帶,記會在瀏覽器和伺服器間來回傳遞。


sessionStorage和localStorage不會自動把數據發給伺服器,僅在本地保存。


大小:cookie數據大小不能超過4k,sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。


時效:localStorage存儲持久數據,電腦培訓http://www.kmbdqn.cn/發現瀏覽器關閉後數據不丟失除非用戶主動刪除數據或清除瀏覽器/應用緩存;sessionStorage數據在當前瀏覽器窗口關閉後自動刪除。


H. 對於IT這行業,請問面試時大概會提哪些問題會有考試嗎比如應聘前端開發工程師

對於你的這個問題,在it行業,我也面試過不少人,我覺得我還是有資格回答一下。
請你自我介紹一下自己好嗎?
回答提示:一般人回答這個問題過於平常,只說姓名、年齡、愛好、工作經驗,這些在簡歷上都有。其實,企業最希望知道的是求職者能否勝任工作,包括:最強的技能、最深入研究的知識領域、個性中最積極的部分、做過的最成功的事,主要的成就等,這些都可以和學習無關,也可以和學習有關,但要突出積極的個性和做事的能力,說得合情合理企業才會相信。企業很重視一個人的禮貌,求職者要尊重考官,在回答每個問題之後都說一句「謝謝」,企業喜歡有禮貌的求職者。
除了這個問題,其他這些常識性問題你也需要注意:
一、守時,遲到乃面試第一大忌
守時本就是誠信的一部分。另外,作為一個求職者,姿態不要放得太高,畢竟你是想加入別人的公司,遲到會給人一種不重視的感覺,企業不希望面試的成本用在不重視的人身上。
二、穿衣搭配,符合公司形象
我曾經作為HR參加過公司的一次面試,第一個進來的面試者因為衣服扣錯了扣子,我已經給他打上了做事不認真細心和隨意地標簽,後面表現的再好,我都不會有興趣了解。穿著符合公司形象很重要,去互聯網公司就穿互聯網元素的衣服,面試銷售,你得穿正裝,這些最基本的會為你加不少的印象分。
三、言語得當,有禮大方
見到面試官你得主動問好,這是最基本的尊重,也是有禮貌的體現。說話大方自信,語言流暢,能做到言簡意賅思路清晰當然是最好的。切忌打斷別人說話,不要覺得你口若懸河,當面試官打斷你說話,那你也就游戲結束了。
四、行為得體,展現氣質
進門之前先敲門,得到指示再入座,這些簡單的常識卻不是每個面試者都能夠做到。一個人的行為反映他的氣質,一個腰都直不起來的求職者,你說會不會影響公司的形象?站立筆直,雙手自然。入座以椅子的三分之二為宜雙手放於膝蓋,身體微微前傾,不要給人以蹲茶館的感覺。
做到以上幾點,「面」這一關基本就不會有太大問題。當然,表達能力是需要長期的鍛煉而非一朝一夕,這就看你平時的積累了。下面再說「試」的問題。

何為「試」就是看看你是否能勝任公司的工作,包括你對企業以及自身的認知,其次就是對知識技能的掌握程度。希望以下幾點能給你一些幫助。
一、知己知彼,百戰不殆
面試前,對所要去的企業做一個大致的了解,包括企業規模;企業文化;主營業務以及目前狀況。另外,你還需要了解公司對你面試崗位的要求以及特殊需求准備應對方案,證明你確實能夠勝任這個崗位。
二、有自己的職業規劃
企業一般都會關注職業規劃這個問題,綜合考慮穩定性等因素,要有自己的展望同時也要讓公司看到你至少短時間內(兩年)的穩定性。公司培養人才是不容易的,自然不會希望人才的流失。
三、知識技能的系統性復習
俗話說「有豆子,你要能倒出來」,知識技能也是如此,別人問你或讓你實際操作時你做不出來那別人只能認為你不會。面試前做一個系統性復習和知識梳理就尤為重要了。
四、機會是留給有準備的人
這里所說的准備不僅包括面試服裝,簡歷,以及知識技能的准備,小到一支筆一個筆記本你都得自己准備。拋開面試需要不說,有準備的人會給人一種很有條理的感覺。
IT屬於技術崗,也會准備一些技術面試,一般都是由技術總監根據你的簡歷進行提問或者准備相關試卷,曾遇到UI面試,面試官提出訴求由面試者進行設計,建議做好充足的准備

I. 有哪些經典的 Web 前端或者 JavaScript 面試筆試題

一、不定項選擇題 (每題3分,共30分)
1. 聲明一個對象,給它加上name屬性和show方法顯示其name值,以下代碼中正確的是( D )
A. var obj = [name:"zhangsan",show:function(){alert(name);}];
B. var obj = {name:」zhangsan」,show:」alert(this.name)」};
C. var obj = {name:」zhangsan」,show:function(){alert(name);}};
D. var obj = {name:」zhangsan」,show:function(){alert(this.name);}};
2. 以下關於Array數組對象的說法不正確的是( CD )
A. 對數組里數據的排序可以用sort函數,如果排序效果非預期,可以給sort函數加一個排序函數的參數
B. reverse用於對數組數據的倒序排列
C. 向數組的最後位置加一個新元素,可以用pop方法
D. unshift方法用於向數組刪除第一個元素
3. 要將頁面的狀態欄中顯示「已經選中該文本框」,下列JavaScript語句正確的是( A )
A. window.status=」已經選中該文本框」
B. document.status=」已經選中該文本框」
C. window.screen=」已經選中該文本框」
D. document.screen=」已經選中該文本框」
4. 點擊頁面的按鈕,使之打開一個新窗口,載入一個網頁,以下JavaScript代碼中可行的是( AD )
A. <input type=」button」 value=」new」
onclick=」open(『new.html』, 『_blank』)」/>
B. <input type=」button」 value=」new」
onclick=」window.location=』new.html』;」/>
C. <input type=」button」 value=」new」
onclick=」location.assign(『new.html』);」/>
D. <form target=」_blank」action=」new.html」>
<inputtype=」submit」 value=」new」/>
</form>
5. 使用JavaScript向網頁中輸出<h1>hello</h1>,以下代碼中可行的是( BD )
A. <scripttype=」text/javascript」>
document.write(<h1>hello</h1>);
</script>
B. <scripttype=」text/javascript」>
document.write(「<h1>hello</h1>」);
</script>
C. <scripttype=」text/javascript」>
<h1>hello</h1>
</script>
D. <h1>
<scripttype=」text/javascript」>
document.write(「hello」);
</script>
</h1>
6. 分析下面的代碼:
<html>
<head>
<script type=」text/javascript」>
function writeIt (value) { document.myfm.first_text.value=value;}
</script>
</head>
<body bgcolor=」#ffffff」>
<form name=」myfm」>
<input type=」text」 name=」first_text」>
<input type=」text」 name=」second_text」>
</form>
</body>
</html>
以下說法中正確的是( CD )
A. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,第一個文本框的內容不變
B. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,將在第二個文本框中復制第一個文本框的內容
C. 在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時,將在第一個文本框中復制第二個文本框的內容
D. 在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,第二個文本框的內容不變
7. 下面的JavaScript語句中,( D )實現檢索當前頁面中的表單元素中的所有文本框,並將它們全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==」text」)
form1.elements.value=」";}
B. for(vari=0;i<document.forms.length;i++) {
if(forms[0].elements.type==」text」)
forms[0].elements.value=」";
}
C. if(document.form.elements.type==」text」)
form.elements.value=」";
D. for(vari=0;i<document.forms.length; i++){
for(var j=0;j<document.forms.elements.length; j++){
if(document.forms.elements[j].type==」text」)
document.forms.elements[j].value=」";
}
}
8. 在表單(form1)中有一個文本框元素(fname),用於輸入電話號碼,格式如:010-82668155,要求前3位是010,緊接一個「-」,後面是8位數字。要求在提交表單時,根據上述條件驗證該文本框中輸入內容的有效性,下列語句中,( A )能正確實現以上功能
A. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」|| str.substr(4).length!=8 ||
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
B. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」 && str.substr(4).length!=8 &&
isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
C. var str= form1.fname.value;
if(str.substr(0,3)!=」010-」|| str.substr(3).length!=8 ||
isNaN(parseFloat(str.substr(3))))
alert(「無效的電話號碼!」);
D. var str= form1.fname.value;
if(str.substr(0,4)!=」010-」&& str.substr(4).length!=8 &&
!isNaN(parseFloat(str.substr(4))))
alert(「無效的電話號碼!」);
9. 關於正則表達式聲明6位數字的郵編,以下代碼正確的是( C )
A. var reg = /\d6/;
B. var reg = \d{6}\;
C. var reg = /\d{6}/;
D. var reg = new RegExp(「\d{6}」);
10. 關於JavaScript里的xml處理,以下說明正確的是( BCD )
A. Xml是種可擴展標記語言,格式更規范,是作為未來html的替代
B. Xml一般用於傳輸和存儲數據,是對html的補充,兩者的目的不同
C. 在JavaScript里解析和處理xml數據時,因為瀏覽器的不同,其做法也不同
D. 在IE瀏覽器里處理xml,首先需要創建ActiveXObject對象
二、問答題
1. 列舉瀏覽器對象模型BOM里常用的至少4個對象,並列舉window對象的常用方法至少5個 (10分)
對象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
2. 簡述列舉文檔對象模型DOM里document的常用的查找訪問節點的方法並做簡單說明 (10分)
Document.getElementById 根據元素id查找元素
Document.getElementByName 根據元素name查找元素
Document.getElementTagName 根據指定的元素名查找元素
三、程序題
1、補充按鈕事件的函數,確認用戶是否退出當前頁面,確認之後關閉窗口; (10分)
<html>
<head>
<script type=」text/javascript」 >
function closeWin(){
//在此處添加代碼
if(confirm(「確定要退出嗎?」)){
window.close();
}
}
</script>
</head>
<body>
<input type=」button」value=」關閉窗口」onclick=」closeWin()」/>
</body>
</html>
2、寫出簡單描述html標簽(不帶屬性的開始標簽和結束標簽)的正則表達式,並將以下字元串中的html標簽去除掉(15分)
var str = 「<div>這里是div<p>裡面的段落</p></div>」;
//
<scripttype=」text/javascript」>
varreg = /<\/?\w+\/?>/gi;
varstr = 「<div>這里是div<p>裡面的段落</p></div>」;
alert(str.replace(reg,」"));
</script>
3、完成foo()函數的內容,要求能夠彈出對話框提示當前選中的是第幾個單選框。(10分)
<html>
<head>
<metahttp-equiv=」Content-Type」 content=」text/html;charset=utf-8″ />
</head>
<body>
<script type=」text/javascript」 >
function foo() {
//在此處添加代碼
var rdo =document.form1.radioGroup;
for(var i =0 ;i<rdo.length;i++){
if(rdo.checked){
alert(「您選擇的是第」+(i+1)+」個單選框」);
}
}
}
</script>
<body>
<form name=」form1″ >
<input type=」radio」 name=」radioGroup」/>
<input type=」radio」 name=」radioGroup」/>
<input type=」radio」 name=」radioGroup」/>
<input type=」radio」 name=」radioGroup」/>
<input type=」submit」/>
</form>
</body>
</html>
4、完成函數showImg(),要求能夠動態根據下拉列表的選項變化,更新圖片的顯示 (15分)
<body>
<script type=」text/javascript」 >
function showImg (oSel) {
//在此處添加代碼
var str = oSel.value;
document.getElementById(「pic」).src= str+」.jpg」;
}
</script>
<img id=」pic」src=」img1.jpg」width=」200″ height=」200″ />
<br />
<select id=」sel」>
<option value=」img1「>城市生活</option>
<option value=」img2「>都市早報</option>
<option value=」img3「>青山綠水</option>
</select></body>

J. 電腦培訓分享前端面試需要掌握哪些html問題

程序員技術面試是永遠都不會缺席的,所以為了能夠讓大家順利的通過面試,我們今天就一起來了解一下,與html相關的一些面試題都有哪些。

1、什麼是盒子模型?


有些面試官會問你對盒子模型的理解,在我們平時看到的網頁中,內部的每一個標簽元素它都是有幾個部分構成的:內容(content)、外邊距(margin)、內邊距(padding)、邊框(border),四個部分組成,當你說完這些面試官是不會滿意這個答案的,因為還有一個重點(IE盒模型和標准盒模型的區別)———IE盒模型的content包括border、padding


本文由@IT·平頭哥聯盟-席填坑官?蘇南分享


2、頁面導入樣式時有幾種方法,它們之間有區別?


link標簽引入,也是當下用的多的一種方式,它屬於XHTML標簽,除了能載入css外,還能定義rel、type、media等屬性;


@import引入,@import是CSS提供的,只能用於載入CSS;


style嵌入方式引入,減少頁面請求(優點),但只會對當前頁面有效,無法復用、會導致代碼冗餘,不利於項目維護(缺點),此方式一般只會項目主站頁使用(騰訊、淘寶、網易、搜狐)等大型網站主頁,之前有看到過都是這種方式,但後來有些也舍棄了


小結:link頁面被載入的時,link會同時被載入,而@import引用的CSS會等到頁面被載入完再載入,且link是XHTML標簽,無兼容問題;link支持動態js去控制DOM節點去改變樣式,而@import不支持,


3、簡單講述一下塊元素、內聯元素、空元素有哪些,它們之間的區別?


行內元素有:a、b、span、img、input、select、textarea、em、img、strong(強調的語氣);


塊級元素有:ul、ol、li、dl、dt、dd、h1、h2、h3、h4p、section、div、form等;


空元素:inputtype="hidden"/>、br>、hr>、link>、meta>;


小結:塊元素總是獨佔一行,margin對內聯元素上下不起作用;


4、說說cookies,sessionStorage、localStorage你對它們的理解?


cookie是網站為了標示用戶身份而儲存在用戶本地終端上的數據(通常經過加密),cookie數據始終在同源的http請求中攜帶,記會在瀏覽器和伺服器間來回傳遞。


sessionStorage和localStorage不會自動把數據發給伺服器,僅在本地保存。


大小:cookie數據大小不能超過4k,sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。


時效:localStorage存儲持久數據,電腦培訓http://www.kmbdqn.com/發現瀏覽器關閉後數據不丟失除非用戶主動刪除數據或清除瀏覽器/應用緩存;sessionStorage數據在當前瀏覽器窗口關閉後自動刪除。