1、手寫jsonp的實現
參考自: http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a53a960b44c6f4.html
先說說JSONP是怎么產生的:
其實網上關于JSONP的講解有很多,但卻千篇一律,而且云里霧里,對于很多剛接觸的人來講理解起來有些困難,著用自己的方式來闡釋一下這個問題,看看是否有幫助。
1、一個眾所周知的問題,Ajax直接請求普通文件存在跨域無權限訪問的問題,甭管你是靜態頁面、動態網頁、web服務、WCF,只要是跨域請求,一律不準。
2、不過我們又發現,Web頁面上調用js文件時則不受是否跨域的影響(不僅如此,我們還發現凡是擁有"src"這個屬性的標簽都擁有跨域的能力,比如script、img、iframe)。
3、于是可以判斷,當前階段如果想通過純web端(ActiveX控件、服務端代理、屬于未來的HTML5之Websocket等方式不算)跨域訪問數據就只有一種可能,那就是在遠程服務器上設法把數據裝進js格式的文件里,供客戶端調用和進一步處理。
4、恰巧我們已經知道有一種叫做JSON的純字符數據格式可以簡潔的描述復雜數據,更妙的是JSON還被js原生支持,所以在客戶端幾乎可以隨心所欲的處理這種格式的數據。
5、這樣子解決方案就呼之欲出了,web客戶端通過與調用腳本一模一樣的方式,來調用跨域服務器上動態生成的js格式文件(一般以JSON為后綴),顯而易見,服務器之所以要動態生成JSON文件,目的就在于把客戶端需要的數據裝入進去。
6、客戶端在對JSON文件調用成功之后,也就獲得了自己所需的數據,剩下的就是按照自己需求進行處理和展現了,這種獲取遠程數據的方式看起來非常像AJAX,但其實并不一樣。
7、為了便于客戶端使用數據,逐漸形成了一種非正式傳輸協議,人們把它稱作JSONP,該協議的一個要點就是允許用戶傳遞一個callback參數給服務端,然后服務端返回數據時會將這個callback參數作為函數名來包裹住JSON數據,這樣客戶端就可以隨意定制自己的函數來自動處理返回數據了。
JSONP的客戶端具體實現:
1、我們知道,哪怕跨域js文件中的代碼(當然指符合web腳本安全策略的),web頁面也是可以無條件執行的。
遠程服務器remoteserver.com根目錄下有個remote.js文件代碼如下:
54、實現一個布局:左邊固定寬度為200,右邊自適應,而且滾動條要自動選擇只出現最高的那個
55、畫出盒子模型,要使谷歌瀏覽器的盒子模型顯示得跟IE瀏覽器一致(讓谷歌跟ie一致,不是ie跟谷歌一致),該怎么做?
56、手寫JS實現類繼承,講原型鏈原理,并解釋new一個對象的過程都發生了什么
57、Array對象自帶的方法,一一列舉
58、若干個數字,怎么選出最大的五個
59、Array對象自帶的排序函數底層是怎么實現的?
60、常用的排序算法有哪些,介紹一下選擇排序
61、了解navigator對象嗎?
62、手寫一個正則表達式,驗證郵箱
63、link和@import引入CSS的區別?
64、剛才說有些瀏覽器不兼容@import,具體指哪些瀏覽器?
65、介紹一下cookie,localstorage,sessionstorage,session
66、jquery綁定click的方法有幾種
67、你的優點/競爭力
68、移動端適配問題
69、react的難點在哪里
70、做過css動畫嗎
71、如何優化網站
72、以后的規劃
73、你做過最困難的事情是啥?
74、css3 html5新特性
75、閉包,ES6,跨域
76、問做過啥項目,用到什么技術,遇到什么困難
77、兼容性
78、盒子模型
79、Array的unshift() method的作用是什么?如何連接兩個Array?如何在Array里移除一個元素?
80、用紙筆寫一個Closure,任意形式和內容
81、知不知道Array-like Object?
82、如何用Native JavaScript來讀寫Cookie?
83、知不知道CSS Box-model?
84、如何做一個AJAX Request?
85、Cross-domain access有沒有了解?
86、前端安全方面有沒有了解?XSS和CSRF如何攻防?
87、HTTP Response的Header里面都有些啥?
88、知不知道HTTP2?
89、輸入URL后發生了什么?
90、new operator實際上做了什么?
91、面向對象的屬性有哪些?
92、做一個兩欄布局,左邊fixed width,右邊responsive,用紙筆手寫
93、講一下AJAX Request
94、講一下Cross-domain access
95、介紹一下做過的項目
96、問到了多個服務器怎么弄,架構之類的
97、angular的渲染流程
98、臟檢查
99、nodejs的架構、優缺點、回調
100、css 盒模型
101、css 布局,左邊定寬右邊自適應
102、冒泡和捕獲,事件流哪三個階段?
103、實現事件代理
104、原型鏈
105、繼承的兩種方法
106、ajax,原生ajax的四個過程
107、閉包,簡單說一個閉包的應用,然后閉包的主要作用是什么
108、css:兩個塊狀元素上下的margin-top和margin-bottom會重疊。啥原因?怎么解決?
109、js:寫一個遞歸。就是每隔5秒調用一個自身,一共100次
110、cookie和session有什么區別
111、網絡分層結構
112、你的不足是什么?
113、做了那么多項目,有沒有自己的歸納總結
114、工程怎么進行文件管理
115、less和sass掌握程度
116、Cookie 是否會被覆蓋,localStorage是否會被覆蓋
117、事件代理js實現
118、Css實現動畫效果
119、Animation還有哪些其他屬性
120、Css實現三列布局
121、Css實現保持長寬比1:1
122、Css實現兩個自適應等寬元素中間空10個像素
123、requireJS的原理是什么
124、如何保持登錄狀態
125、浮動的原理以及如何清除浮動
126、Html的語義化
127、原生js添加class怎么添加,如果本身已經有class了,會不會覆蓋,怎么保留?
128、Jsonp的原理。怎么去讀取一個script里面的數據?
129、如果頁面初始載入的時候把ajax請求返回的數據存在localStorage里面,然后每次調用的時候去localStorage里面取數,是否可行。
130、304是什么意思?有沒有方法不請求不經過服務器直接使用緩存
131、http請求頭有哪些字段
132、數組去除一個函數。用arr.splice。又問splice返回了什么?應該返回的是去除的元素。
133、js異步的方法(promise,generator,async)
134、Cookie跨域請求能不能帶上
135、最近看什么開源項目?
136、commonJS和AMD
137、平時是怎么學習的?
138、為什么要用translate3d?
139、對象中key-value的value怎么再放一個對象?
140、Get和post的區別?
145、Post一個file的時候file放在哪的?
146、說說你對組件的理解
147、組件的html怎么進行管理
148、js的異步加載,promise的三種狀態,ES7中的async用過么
149、靜態屬性怎么繼承
150、js原型鏈的繼承
151、jquery和zepto有什么區別
152、angular的雙向綁定原理
153、angular和react的認識
154、MVVM是什么
155、移動端是指手機瀏覽器,還是native,還是hybrid
156、你用了移動端的什么庫類和框架?
157、移動端要注意哪些?
158、適配有去考慮么,retina屏幕啊?
159、rem是什么?em是什么?如果上一層就是根root了,em和rem等價么?
160、怎么測試的?會自動化測試么?
161、你覺得你什么技術最擅長?
162、你平時有沒有什么技術的沉淀?
163、單向鏈表怎么查找有沒有環?
164、怎么得到一個頁面的a標簽?
165、怎么在頁面里放置一個很簡單的圖標,不能用img和background-img?
166、正則表達式判斷url
167、怎么去除字符串前后的空格
168、實現頁面的局部刷新
169、絕對定位與相對定位的區別
170、js輪播實現思路
171、使用js畫一個拋物線,拋物線上有個小球隨著拋物線運動,有兩個按鈕能使小球繼續運動停止運動
172、java五子棋,說下實現思路
173、如何讓各種情況下的div居中(絕對定位的div,垂直居中,水平居中)?
174、display有哪些值?說明他們的作用
175、css定義的權重
176、requirejs實現原理
177、requirejs怎么防止重復加載
178、ES6里頭的箭頭函數的this對象與其他的有啥區別
179、tcp/udp區別
180、tcp三次握手過程
181、xss與csrf的原理與怎么防范
182、mysql與 MongoDB的區別
183、w3c事件與IE事件的區別
184、有沒有上傳過些什么npm模塊
185、IE與W3C怎么阻止事件的冒泡
186、gulp底層實現原理
187、webpack底層實現原理
188、gulp與webpack區別
189、vuejs與angularjs的區別
190、vuex是用來做什么的
191、說下你知道的響應狀態碼
192、ajax的過程以及 readyState幾個狀態的含義
193、你除了前端之外還會些什么?
194、cookie與session的區別
195、一些關于php與java的問題
196、你覺得你哪個項目是你做的最好的
197、說說你在項目中遇到了哪些困難,是怎么解決的
198、前端優化你知道哪些
199、webpack是用來干嘛的
200、webpack與gulp的區別
201、es6與es7了解多少
202、說下你知道的響應狀態碼
203、看過哪些框架的源碼
204、遇到過哪些瀏覽器兼容性問題
205、清除浮動有哪幾種方式,分別說說
206、你知道有哪些跨域方式,分別說說
207、JavaScript有哪幾種類型的值
208、使用 new操作符時具體是干了些什么
209、學習前端的方法以及途徑
210、怎么實現兩個大整數的相乘,說下思路
211、你學過數據結構沒,說說你都了解些什么
212、你學過計算機操作系統沒,說說你都了解些什么
213、你學過計算機組成原理沒,說說你都了解些什么
214、你學過算法沒,說說你都了解些什么
215、說下選擇排序,冒泡排序的實現思路
216、用過哪些框架
217、讓你設計一個前端css框架你怎么做
218、了解哪些設計模式說說看
219、說下你所了解的設計模式的優點
220、vue源碼結構
221、狀態碼
222、瀏覽器緩存的區別
223、304與200讀取緩存的區別
224、http請求頭有哪些,說說看你了解哪些
225、js中this的作用
226、js中上下文是什么
227、js有哪些函數能改變上下文
228、你所了解的跨域的方法都說說看你了解的?
229、要是讓你自己寫一個js框架你會用到哪些設計模式
230、平常在項目中用到過哪些設計模式,說說看
231、一來給了張紙要求寫js自定義事件
232、前端跨域的方法
233、call與apply的區別
234、h5有個api能定位你知道是哪個嗎?
235、vue與angularjs中雙向數據綁定是怎樣實現的?
236、webpack怎樣配置?
237、nodejs中的文件怎么讀寫?
238、link和@import有什么區別?
239、cookies,sessionStorage 和 localStorage 的區別
240、看過哪些前端的書?平時是怎么學習的
241、說下你所理解的mvc與mvvc
242、position有哪些值,說下各自的作用
243、寫個從幾個li中取下標的閉包代碼
244、你的職業規劃是怎么樣的?
245、移動端性能優化
246、lazyload如何實現
247、點透問題
248、前端安全
249、原生js模板引擎
250、repaint和reflow區別
251、requirejs如何避免循環依賴?
252、實現布局:左邊一張圖片,右邊一段文字(不是環繞)
253、window.onload和$(document).ready()的區別,瀏覽器加載轉圈結束時哪個時間點?
254、form表單當前頁面無刷新提交 target iframe
255、setTimeout和setInterval區別,如何互相實現?
256、如何避免多重回調—promise,promise簡單描述一下,如何在外部進行resolve()
257、margin坍塌?水平方向會不會坍塌?
258、偽類和偽元素區別
259、vue如何實現父子組件通信,以及非父子組件通信
260、數組去重
261、使用flex布局實現三等分,左右兩個元素分別貼到左邊和右邊,垂直居中
262、平時如何學前端的,看了哪些書,關注了哪些公眾號
263、實現bind函數
264、數組和鏈表區別,分別適合什么數據結構
265、對mvc的理解
266、描述一個印象最深的項目,在其中擔任的角色,解決什么問題
267、http狀態碼。。。401和403區別?
268、描述下二分查找
269、為什么選擇前端,如何學習的,看了哪些書,《js高級程序設計》和《你不知道的js》有什么區別,看書,看博客,看公眾號三者的時間是如何分配的?
270、如何評價BAT?
271、描述下在實習中做過的一個項目,解決了什么問題,在其中擔任了什么角色?這個過程存在什么問題,有什么值得改進的地方?
272、如何看待加班,如果有個項目需要連續一個月加班,你怎么看?
273、遇到的壓力最大的一件事是什么?如何解決的?
274、平時有什么愛好
275、自身有待改進的地方
276、n長的數組放入n+1個數,不能重復,找出那個缺失的數
277、手里有什么offer
278、你對于第一份工作最看重的三個方面是什么?
279、如何評價現在的前端?
280、用原生js實現復選框選擇以及全選非全選功能
281、用4個顏色給一個六面體上色有多少種情況
282、amd和cmd區別
283、為什么選擇前端,移動端性能優化
284、vue的特點?雙向數據綁定是如何實現的
285、Object.defineProperty
286、算法題:數組去重,去除重復兩次以上的元素,代碼題:嵌套的ul-li結構,根據input中輸入的內容,去除相應的li節點,且如果某個嵌套的ul下面的li都被移除,則該ul的父li節點也要被移除
287、頁面加載過程
288、瀏覽器如何實現圖片緩存
以上資料已經好了需要的小伙伴下方卡片獲取!
收集了很多編程語錄,基本上都跟程序員的生活有關。這些語錄涉及軟件開發,代碼維護,調試糾錯,軟件bug,系統設計、文檔,代碼質量,測試和軟件開發團隊管理等方面。下面的這59條語錄雖然很搞笑,但卻真實無比。只有程序員才能理解這些編程語句里的真正內涵。閑言少敘,開始吧…
程序員編程語錄
1. 一個好的程序員是那種過單行線馬路都要往兩邊看的人。(Doug Linder)
2. 程序有問題時不要擔心。如果所有東西都沒問題,你就失業了。(軟件工程的Mosher定律)
3. 程序員的麻煩在于,你無法弄清他在搗騰什么,當你最終弄明白時,也許已經晚了。(超級計算機之父Seymour Cray)
4. 我想大部分人都知道通常一個程序員會具有的美德。當然了,有三種:懶惰,暴躁,傲慢。(Perl語言發明者Larry Wall)
5. 編程時要保持這種心態:就好象將來要維護你這些代碼的人是一位殘暴的精神病患者,而且他知道你住在哪。(Martin Golding)
6. 一個人寫的爛軟件將會給另一個人帶來一份全職工作。(Jessica Gaston)
7. 如果建筑工人像程序員寫軟件那樣蓋房子,那第一只飛來的啄木鳥就能毀掉人類文明。(Gerald Weinberg)
8. 這世界最有可能毀滅的方式——大多數專家都同意——是次意外。這就是為什么會有我們,我們是計算機專家,我們創造意外。(Nathaniel Borenstein)
9. 我們這個行業有個特別奇怪的現象:不僅我們不從失敗里吸取教訓,同時也不從成功中學習經驗。 (Keith Braithwaite)
10. 一種新技術一旦開始流行,你要么坐上壓路機,要么成為鋪路石。(Stewart Brand)
11. 如果沒能一次成功,那就叫它1.0版吧。(unknown)
12. 所有的程序員都是編劇,所有的計算機都是爛演員。(Anonymous Hack Actor)
13. 工作進度上越早落后,你就會有越充足的時間趕上。(Anonymous Scheduler)
14. 當有這樣的一種編程語言出現:它能讓程序員用簡單的英語編程,你將會發現,程序員都開始不會說英語。(Anonymous Linguist)
15. 為什么我們沒有時間把事情做對,卻總有時間把事情做過頭?(Anonymous)
16. 傻瓜都能寫出計算機能理解的程序。優秀的程序員寫出的是人類能讀懂的代碼。
17. 任何你寫的代碼,超過6個月不去看它,當你再看時,都像是別人寫的。(Eagleson’s law)
編程/軟件開發語錄
1. 按代碼行數來評估軟件開發的進度,就如同按重量來評估飛機建造的進度。(比爾-蓋茨)
2. 軟件就像做愛。一次犯錯,你需要用余下一生來維護支持。(Michael Sinz)
3. 在水上行走和按需求文檔開發軟件都很容易——前提是它們都是凍結狀態。(Edward V Berard)
4. 最初90%的代碼用去了最初90%的開發時間…余下10%的代碼用去了另外90%的開發時間。(Tom Cargill)
5. 注釋代碼很像清潔你的廁所——你不想干,但如果你做了,這絕對會給你和你的客人帶來更愉悅的體驗。(Ryan Campbell)
6. 如今的編程是一場程序員和上帝的競賽,程序員要開發出更大更好、傻瓜都會用到軟件。而上帝在努力創造出更大更傻的傻瓜。目前為止,上帝是贏的。(Rick Cook)
7. 軟件設計最困難的部分…是阻擋新功能的引入。(Donald Norman)
8. 為了理解遞歸,我們首先要理解的是遞歸。(Anonymous)
9. 世上只有兩類編程語言:那些擁有被人詬病的和那些沒人用的。(Bjarne Stroustrup)
10. The best thing about a boolean is even if you are wrong, you are only off by a bit. (Anonymous)
11. 如果Java能實現真的垃圾回收,那大部分的程序都會在執行時刪除自己。(Robert Swell)
12. 理論上,理論和實踐是沒有差異的。但實踐中,是有的。(Jan L. A. van de Snepscheut)
13. 預備,開火,瞄準:這是最快的軟件開發方法。預備,瞄準,瞄準,瞄準,瞄準:這是最慢的軟件開發方法。(Anonymous)
14. 編程是10%的科學,20%天份,和70%的讓這天份符合科學。(Anonymous)
15. 評估一個事情要比去理解你評估了什么容易。(Anonymous)
16. 測評不會撒謊,但測評的人會。(Anonymous)
17. 培養員工,即使他們有跳槽的風險。什么都不做而留他們在公司,這樣風險更大。(Anonymous)
18. 計算機科學的目標是做出一個東西,并且保證它至少能堅持到我們將它開發完成。(Anonymous)
19. Java之于JavaScript如同Car之于Carpet。 (Chris Heilmann)
20. 起初就把事情做對是完全沒必要的。但最后要把事情做對是絕對必要的。(Andrew Hunt and David Thomas)
21. 數組的起始索引應該從0開始還是從1開始?我的0.5的折中提議被他們未經認真考慮到拒絕了——我認為是這樣的。(Stan Kelly-Bootle)
22. 程序必須是為了給人看而寫,給機器去執行只是附帶任務。 (Abelson / Sussman)
23. 編程可以很有趣,你可以用它做密碼學研究,但兩者絕對不能合二為一。(Kreitzberg and Shneiderman)
24. 拷貝-粘貼是一種設計錯誤。(David Parnas)
25. 計算機善于遵循指令,但不善于理解你的思維。(Donald Knuth)
軟件糾錯語錄
1. 刪除的代碼是沒有bug的代碼。(Jeff Sickel)
2. 如果糾錯是消除軟件bug的過程,那編程一定是把它們放進去的過程。(Edsger Dijkstra)
3. 代碼糾錯要比新編寫代碼困難一倍。因為,如果你寫出了最聰明的代碼,按此推算,你將沒有更大的智慧來debug它。
4. 想在自己的代碼里找出一個錯誤是十分困難的。而當你認為你的代碼沒有錯誤時,那就更難了。(Steve McConnel)
軟件bug語錄
1. 這不是個bug——這一個未注明的功能特征。(Anonymous)
2. 沒有需求或設計,編程就是一種將bug添加到一個空文本文件里的藝術。(Louis Srygley)
3. 爛代碼并不爛,只是被誤解了。(Anonymous Code Behaviorist)
4. 有兩種方法能寫出沒有錯誤的程序;但只有第三種好用。(Alan J. Perlis)
5. 小心上面代碼中的bug;我只知道這些代碼是正確的,但沒有試過。(Donald Knuth)
軟件產品/成品語錄
1. 軟件能夠復用前,它必須要可用。(Ralph Johnson)
2. 軟件通常在beta測試完成不久后發布。Beta在拉丁語中是“還不能用”的意思。(Anonymous)
3. 最好的性能改進是將軟件從不能用的狀態變成可用。(J. Osterhout)
4. 最廉價、最快速、最可信賴的組件是那些還未出現的組件。(Gordon Bell)
5. I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing. (Oktal)
6. 軟件和教堂非常相似——建成之后我們就在祈禱。(Sam Redwine)
7. 除非最后一個用戶死掉,軟件是不會有完工的時候的。(Anonymous)
8. 如今的大部分軟件都非常像埃及金字塔,由成千上萬的石塊一個摞一個構成,沒有結構上的集成,是由暴力強制和成千上萬的奴隸完成。(Alan Kay)
博最近超級流行的小討論,評選男生眼中很火的文藝句子,你們覺得男生說這些話能撩到你嗎?
進一步沒資格,退一步舍不得。
我看得見風,聞得到雨,唯獨聽不到一句我愛你。
海的那邊,是否還有等待?
冗長的黑夜中,你是我唯一的光。
人間很苦,有你很甜!
心在樹上,你摘就是。
曖昧上頭的那幾秒,真的像極了愛情。
你覺得這些微博最火句子能打動你嗎,你最喜歡的表白神句是什么?一起說說吧!
https://qnp.chumanapp.com/ldy/ldy20181101/index.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。