cainiaoblog 23.2.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/CNAME +1 -0
  2. package/MP_verify_o6dHCK5mIkxNpzvZ.txt +1 -0
  3. package/README.md +8 -0
  4. package/about/index.html +54 -0
  5. package/ads.txt +1 -0
  6. package/app/manual.html +104 -0
  7. package/appConfigs/config +1 -0
  8. package/archives/2018/index.html +48 -0
  9. package/archives/2019/index.html +48 -0
  10. package/archives/2019/page/2/index.html +48 -0
  11. package/archives/2020/index.html +48 -0
  12. package/archives/2021/index.html +48 -0
  13. package/archives/2022/index.html +48 -0
  14. package/archives/2023/index.html +48 -0
  15. package/archives/index.html +48 -0
  16. package/archives/page/2/index.html +48 -0
  17. package/archives/page/3/index.html +48 -0
  18. package/article/10047.html +148 -0
  19. package/article/10164.html +64 -0
  20. package/article/10624.html +436 -0
  21. package/article/10745.html +586 -0
  22. package/article/11674.html +71 -0
  23. package/article/11939.html +72 -0
  24. package/article/12238.html +86 -0
  25. package/article/1230.html +533 -0
  26. package/article/13265.html +69 -0
  27. package/article/13823.html +78 -0
  28. package/article/14125.html +72 -0
  29. package/article/14192.html +561 -0
  30. package/article/14375.html +85 -0
  31. package/article/14744.html +83 -0
  32. package/article/14936.html +451 -0
  33. package/article/1518.html +250 -0
  34. package/article/15428.html +71 -0
  35. package/article/15518.html +288 -0
  36. package/article/15569.html +418 -0
  37. package/article/1566.html +122 -0
  38. package/article/16017.html +156 -0
  39. package/article/16947.html +440 -0
  40. package/article/17096.html +82 -0
  41. package/article/17246.html +89 -0
  42. package/article/17575.html +350 -0
  43. package/article/179.html +757 -0
  44. package/article/18039.html +233 -0
  45. package/article/18071.html +375 -0
  46. package/article/18142.html +71 -0
  47. package/article/19909.html +160 -0
  48. package/article/20014.html +89 -0
  49. package/article/20021.html +389 -0
  50. package/article/20037.html +280 -0
  51. package/article/20056.html +95 -0
  52. package/article/20093.html +404 -0
  53. package/article/2021.html +607 -0
  54. package/article/20459.html +115 -0
  55. package/article/20613.html +263 -0
  56. package/article/20635.html +71 -0
  57. package/article/21317.html +71 -0
  58. package/article/21320.html +90 -0
  59. package/article/21782.html +548 -0
  60. package/article/22230.html +435 -0
  61. package/article/22237.html +347 -0
  62. package/article/22398.html +109 -0
  63. package/article/22422.html +270 -0
  64. package/article/22565.html +300 -0
  65. package/article/23046.html +250 -0
  66. package/article/23083.html +215 -0
  67. package/article/23195.html +297 -0
  68. package/article/23301.html +835 -0
  69. package/article/23589.html +285 -0
  70. package/article/23655.html +338 -0
  71. package/article/23864.html +76 -0
  72. package/article/23914.html +96 -0
  73. package/article/24169.html +135 -0
  74. package/article/24581.html +349 -0
  75. package/article/2475.html +500 -0
  76. package/article/24826.html +77 -0
  77. package/article/24924.html +247 -0
  78. package/article/25164.html +1495 -0
  79. package/article/25318.html +394 -0
  80. package/article/25710.html +1129 -0
  81. package/article/25734.html +83 -0
  82. package/article/26083.html +174 -0
  83. package/article/26147.html +283 -0
  84. package/article/26291.html +110 -0
  85. package/article/26354.html +71 -0
  86. package/article/26624.html +145 -0
  87. package/article/26639.html +298 -0
  88. package/article/26850.html +138 -0
  89. package/article/26940.html +258 -0
  90. package/article/27796.html +190 -0
  91. package/article/27800.html +161 -0
  92. package/article/28963.html +159 -0
  93. package/article/28976.html +247 -0
  94. package/article/29042.html +72 -0
  95. package/article/29596.html +81 -0
  96. package/article/29619.html +183 -0
  97. package/article/29623.html +329 -0
  98. package/article/29829.html +205 -0
  99. package/article/29abbd1c.html +112 -0
  100. package/article/30215.html +178 -0
  101. package/article/30552.html +78 -0
  102. package/article/30818.html +201 -0
  103. package/article/31330.html +364 -0
  104. package/article/3154.html +577 -0
  105. package/article/31695.html +348 -0
  106. package/article/31826.html +71 -0
  107. package/article/31843.html +132 -0
  108. package/article/32280.html +212 -0
  109. package/article/32431.html +74 -0
  110. package/article/32443.html +72 -0
  111. package/article/32732.html +122 -0
  112. package/article/3286.html +251 -0
  113. package/article/32960.html +198 -0
  114. package/article/33713.html +72 -0
  115. package/article/33899.html +615 -0
  116. package/article/34351.html +74 -0
  117. package/article/34372.html +89 -0
  118. package/article/34410.html +74 -0
  119. package/article/34431.html +118 -0
  120. package/article/3447.html +75 -0
  121. package/article/34474.html +142 -0
  122. package/article/34871.html +147 -0
  123. package/article/35397.html +175 -0
  124. package/article/3544.html +199 -0
  125. package/article/35503.html +115 -0
  126. package/article/35624.html +84 -0
  127. package/article/35697.html +384 -0
  128. package/article/35863.html +73 -0
  129. package/article/36037.html +253 -0
  130. package/article/36118.html +71 -0
  131. package/article/3621.html +119 -0
  132. package/article/36251.html +296 -0
  133. package/article/36642.html +352 -0
  134. package/article/37102.html +763 -0
  135. package/article/37336.html +351 -0
  136. package/article/37351.html +89 -0
  137. package/article/3760.html +294 -0
  138. package/article/37749.html +75 -0
  139. package/article/37789.html +83 -0
  140. package/article/38005.html +765 -0
  141. package/article/38009.html +284 -0
  142. package/article/38269.html +194 -0
  143. package/article/38344.html +88 -0
  144. package/article/38359.html +334 -0
  145. package/article/38423.html +379 -0
  146. package/article/38530.html +213 -0
  147. package/article/38743.html +268 -0
  148. package/article/38753.html +204 -0
  149. package/article/38881.html +71 -0
  150. package/article/39087.html +414 -0
  151. package/article/39309.html +84 -0
  152. package/article/39486.html +74 -0
  153. package/article/39637.html +306 -0
  154. package/article/39839.html +72 -0
  155. package/article/39937.html +152 -0
  156. package/article/39970.html +71 -0
  157. package/article/402.html +559 -0
  158. package/article/40698.html +71 -0
  159. package/article/40811.html +71 -0
  160. package/article/40964.html +462 -0
  161. package/article/41011.html +322 -0
  162. package/article/41152.html +78 -0
  163. package/article/41696.html +71 -0
  164. package/article/41717.html +281 -0
  165. package/article/41777.html +149 -0
  166. package/article/419.html +985 -0
  167. package/article/4233.html +136 -0
  168. package/article/4292.html +86 -0
  169. package/article/43302.html +96 -0
  170. package/article/43397.html +106 -0
  171. package/article/43724.html +281 -0
  172. package/article/43999.html +224 -0
  173. package/article/44426.html +77 -0
  174. package/article/44964.html +137 -0
  175. package/article/45004.html +123 -0
  176. package/article/4510.html +83 -0
  177. package/article/45156.html +320 -0
  178. package/article/45157.html +52 -0
  179. package/article/45267.html +87 -0
  180. package/article/45641.html +207 -0
  181. package/article/45960.html +75 -0
  182. package/article/46100.html +1262 -0
  183. package/article/46366.html +74 -0
  184. package/article/46771.html +96 -0
  185. package/article/46911.html +517 -0
  186. package/article/46948.html +137 -0
  187. package/article/46ee4850.html +349 -0
  188. package/article/47019.html +84 -0
  189. package/article/47532.html +94 -0
  190. package/article/4783.html +429 -0
  191. package/article/47972.html +72 -0
  192. package/article/48216.html +127 -0
  193. package/article/48252.html +185 -0
  194. package/article/48520.html +74 -0
  195. package/article/48722.html +75 -0
  196. package/article/48807.html +99 -0
  197. package/article/49126.html +323 -0
  198. package/article/50001.html +88 -0
  199. package/article/50058.html +151 -0
  200. package/article/50343.html +410 -0
  201. package/article/50510.html +82 -0
  202. package/article/51082.html +98 -0
  203. package/article/51677.html +111 -0
  204. package/article/5204.html +1085 -0
  205. package/article/52500.html +538 -0
  206. package/article/52689.html +259 -0
  207. package/article/52877.html +569 -0
  208. package/article/53125.html +191 -0
  209. package/article/53428.html +251 -0
  210. package/article/53524.html +74 -0
  211. package/article/53698.html +322 -0
  212. package/article/53803e6.html +93 -0
  213. package/article/53924.html +291 -0
  214. package/article/53962.html +253 -0
  215. package/article/54006.html +71 -0
  216. package/article/54018.html +88 -0
  217. package/article/54161.html +83 -0
  218. package/article/54178.html +69 -0
  219. package/article/54258.html +327 -0
  220. package/article/54295.html +214 -0
  221. package/article/54313.html +1976 -0
  222. package/article/54351.html +90 -0
  223. package/article/54604.html +80 -0
  224. package/article/54632.html +71 -0
  225. package/article/54912.html +756 -0
  226. package/article/54918.html +129 -0
  227. package/article/55119.html +136 -0
  228. package/article/55756.html +118 -0
  229. package/article/55769.html +136 -0
  230. package/article/55870.html +161 -0
  231. package/article/56139.html +92 -0
  232. package/article/56557.html +69 -0
  233. package/article/56604.html +69 -0
  234. package/article/56816.html +266 -0
  235. package/article/56926.html +153 -0
  236. package/article/57747.html +409 -0
  237. package/article/57965.html +475 -0
  238. package/article/58816.html +78 -0
  239. package/article/59059.html +435 -0
  240. package/article/59095.html +350 -0
  241. package/article/59349.html +244 -0
  242. package/article/59402.html +216 -0
  243. package/article/59448.html +55 -0
  244. package/article/59870.html +94 -0
  245. package/article/59877.html +208 -0
  246. package/article/5dbb6f41.html +86 -0
  247. package/article/6008.html +75 -0
  248. package/article/60327.html +126 -0
  249. package/article/6035.html +76 -0
  250. package/article/60428.html +71 -0
  251. package/article/60544.html +128 -0
  252. package/article/61319.html +95 -0
  253. package/article/61367.html +93 -0
  254. package/article/624d1918.html +292 -0
  255. package/article/62543.html +71 -0
  256. package/article/62887.html +169 -0
  257. package/article/63074.html +120 -0
  258. package/article/63266.html +311 -0
  259. package/article/63351.html +74 -0
  260. package/article/63542.html +104 -0
  261. package/article/63824.html +275 -0
  262. package/article/64051.html +653 -0
  263. package/article/64189b69.html +72 -0
  264. package/article/64354.html +75 -0
  265. package/article/64869.html +79 -0
  266. package/article/64923.html +596 -0
  267. package/article/65128.html +95 -0
  268. package/article/65295.html +79 -0
  269. package/article/6888.html +75 -0
  270. package/article/7065.html +84 -0
  271. package/article/7455.html +85 -0
  272. package/article/7a3ef8f.html +315 -0
  273. package/article/8140.html +188 -0
  274. package/article/8190.html +85 -0
  275. package/article/8225.html +78 -0
  276. package/article/84c9ccd6.html +159 -0
  277. package/article/8f9a9ae3.html +82 -0
  278. package/article/9174.html +73 -0
  279. package/article/9738.html +294 -0
  280. package/article/a4145266.html +71 -0
  281. package/article/bedea419.html +72 -0
  282. package/article/bf7e7421.html +78 -0
  283. package/article/c1867fbf.html +103 -0
  284. package/article/c5576490.html +70 -0
  285. package/article/dcb0db28.html +76 -0
  286. package/article/fc3b727a.html +79 -0
  287. package/atom.xml +445 -0
  288. package/baidusitemap.xml +1079 -0
  289. package/blocks/dns.txt +264 -0
  290. package/blocks/filter.txt +1070 -0
  291. package/blocks/script.js +42 -0
  292. package/categories/CDN/index.html +48 -0
  293. package/categories/IDE/index.html +48 -0
  294. package/categories/git/index.html +48 -0
  295. package/categories/hexo/index.html +48 -0
  296. package/categories//345/205/254/345/205/261/350/212/202/346/227/245/index.html +48 -0
  297. package/categories//345/210/206/344/272/253/index.html +48 -0
  298. package/categories//345/211/215/347/253/257/index.html +48 -0
  299. package/categories//345/211/215/347/253/257/page/2/index.html +48 -0
  300. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250/index.html +48 -0
  301. package/categories//345/211/215/347/253/257//346/265/217/350/247/210/345/231/250//347/275/221/347/273/234/345/215/217/350/256/256/index.html +48 -0
  302. package/categories//345/215/232/345/256/242/index.html +48 -0
  303. package/categories//345/267/245/345/205/267/index.html +48 -0
  304. package/categories//345/271/277/345/221/212/350/277/207/346/273/244/index.html +48 -0
  305. package/categories//345/271/277/345/221/212/350/277/207/346/273/244//350/247/206/351/242/221/347/224/265/350/247/206/345/260/217/350/257/264/346/274/253/347/224/273/350/265/204/350/256/257/351/237/263/344/271/220/index.html +48 -0
  306. package/categories//346/255/243/345/210/231/index.html +48 -0
  307. package/categories//346/265/217/350/247/210/345/231/250/index.html +48 -0
  308. package/categories//347/256/227/346/263/225/index.html +48 -0
  309. package/categories//350/265/204/350/256/257/index.html +48 -0
  310. package/categories//350/275/273/346/235/276/344/270/200/345/210/273/index.html +48 -0
  311. package/cdn/css/font-awesome.min.css +4 -0
  312. package/cdn/css/grids-responsive-min.css +7 -0
  313. package/cdn/css/normalize.css +349 -0
  314. package/cdn/css/pure-min.css +11 -0
  315. package/cdn/fonts/fontawesome-webfont.eot +0 -0
  316. package/cdn/fonts/fontawesome-webfont.svg +2671 -0
  317. package/cdn/fonts/fontawesome-webfont.ttf +0 -0
  318. package/cdn/fonts/fontawesome-webfont.woff +0 -0
  319. package/cdn/fonts/fontawesome-webfont.woff2 +0 -0
  320. package/cdn/js/Valine.min.js +17 -0
  321. package/cdn/js/canvas-nest.js +1 -0
  322. package/cdn/js/clipboard.min.js +7 -0
  323. package/cdn/js/crypto-js.js +25 -0
  324. package/cdn/js/jquery.min.js +2 -0
  325. package/css/default.css +1144 -0
  326. package/css/donate.css +338 -0
  327. package/css/hbe.style.css +749 -0
  328. package/css/style.css +2095 -0
  329. package/donate/index.html +39 -0
  330. package/google917dcf72f6e5c7f5.html +1 -0
  331. package/guestbook/index.html +68 -0
  332. package/hosts/ads.txt +149 -0
  333. package/hosts/flash.txt +9 -0
  334. package/hosts/github.txt +6 -0
  335. package/hosts/google.txt +16936 -0
  336. package/hosts/winrar.txt +2 -0
  337. package/img/alipay.svg +46 -0
  338. package/img/bitcoin.svg +135 -0
  339. package/img/blog.ico +0 -0
  340. package/img/blog.png +0 -0
  341. package/img/gaba.png +0 -0
  342. package/img/github.svg +1 -0
  343. package/img/like.svg +1 -0
  344. package/img/mp-mini.jpg +0 -0
  345. package/img/mp.png +0 -0
  346. package/img/paypal.svg +63 -0
  347. package/img/upy_logo.svg +59 -0
  348. package/img/wechat.svg +49 -0
  349. package/index.html +48 -0
  350. package/jd_root.txt +1 -0
  351. package/js/codeblock-resizer.js +51 -0
  352. package/js/dark.js +12 -0
  353. package/js/donate.js +87 -0
  354. package/js/fixedPage.js +106 -0
  355. package/js/gitment.browser.js +3751 -0
  356. package/js/search.js +86 -0
  357. package/js/share.js +60 -0
  358. package/js/smartresize.js +32 -0
  359. package/js/totop.js +12 -0
  360. package/kankan/index.html +77 -0
  361. package/lib/hbe.js +293 -0
  362. package/package.json +25 -0
  363. package/page/10/index.html +49 -0
  364. package/page/11/index.html +59 -0
  365. package/page/12/index.html +67 -0
  366. package/page/13/index.html +63 -0
  367. package/page/14/index.html +66 -0
  368. package/page/15/index.html +60 -0
  369. package/page/16/index.html +60 -0
  370. package/page/17/index.html +62 -0
  371. package/page/18/index.html +61 -0
  372. package/page/19/index.html +58 -0
  373. package/page/2/index.html +48 -0
  374. package/page/20/index.html +57 -0
  375. package/page/21/index.html +61 -0
  376. package/page/22/index.html +55 -0
  377. package/page/23/index.html +64 -0
  378. package/page/24/index.html +60 -0
  379. package/page/25/index.html +58 -0
  380. package/page/26/index.html +48 -0
  381. package/page/27/index.html +58 -0
  382. package/page/3/index.html +48 -0
  383. package/page/4/index.html +48 -0
  384. package/page/5/index.html +51 -0
  385. package/page/6/index.html +51 -0
  386. package/page/7/index.html +51 -0
  387. package/page/8/index.html +53 -0
  388. package/page/9/index.html +48 -0
  389. package/randomcall/README.html +1 -0
  390. package/randomcall/lucker.html +290 -0
  391. package/randomcall/lucky.png +0 -0
  392. package/robots.txt +22 -0
  393. package/search.xml +6740 -0
  394. package/sitemap.xml +2669 -0
  395. package/tags//345/216/237/345/210/233/index.html +48 -0
  396. package/tags//345/250/261/344/271/220/index.html +48 -0
  397. package/tags//346/211/213/345/206/231/index.html +48 -0
  398. package/tags//347/226/253/346/203/205/index.html +48 -0
  399. package/tags//350/275/254/350/275/275/index.html +48 -0
  400. package/tags//350/275/254/350/275/275/page/2/index.html +48 -0
  401. package/v.html +90 -0
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html><html lang="zh-CN" data-dark><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="前端壹菜鸟,记录工作难题,关注前端知识,收集精彩博文,做技术的搬运工"><meta name="msvalidate.01" content="0FE4D8B3381D3D87088996B886E1E2BD"><title>ES2020(es11) 9个新特性出炉了,你最喜欢哪一个呢? | 前端壹菜鸟</title><link rel="stylesheet" type="text/css" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/normalize.css@latest/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/pure-min.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/grids-responsive-min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"><link rel="icon" mask="" sizes="any" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="Shortcut Icon" type="image/x-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="apple-touch-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="apple-touch-icon-precomposed" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="alternate" type="application/atom+xml" href="/atom.xml"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8385136408348258"></script><script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script><script>(function(){
2
+ var bp = document.createElement('script');
3
+ var curProtocol = window.location.protocol.split(':')[0];
4
+ if (curProtocol === 'https'){
5
+ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
6
+ }
7
+ else{
8
+ bp.src = 'http://push.zhanzhang.baidu.com/push.js';
9
+ }
10
+ var s = document.getElementsByTagName("script")[0];
11
+ s.parentNode.insertBefore(bp, s);
12
+ })();
13
+ </script><script>(function(){
14
+ var src = 'https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f28525f2db83acfaaf6e696dba';
15
+ document.write('<script src="' + src + '" id="sozz"><\/script>');
16
+ })();
17
+ </script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
18
+ </script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
19
+ </script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">ES2020(es11) 9个新特性出炉了,你最喜欢哪一个呢?</h1><div class="post-meta"><span class="date">2020-10-20</span><span> | </span><span class="tag"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 1.4k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 6</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/20459.html#vcomment"><span class="waline-comment-count" data-path="/article/20459.html"></span><span> 条评论</span></a><div class="post-content"><p><code>原文:https://pawelgrzybek.com/whats-new-in-ecmascript-2020/</code><br><code>译文转自:https://zhuanlan.zhihu.com/p/133658121</code><br><code>译者:RichLab 前端 Jothy</code><br>ECMAScript 2020 新特性均已敲定。瞧瞧今年都有哪些看头,以及实际的例子吧。</p>
20
+ <span id="more"></span>
21
+ <ul>
22
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23stringprototypematchall-by-jordan-harband">String.prototype.matchAll - 由 Jordan Harband 提出</a></li>
23
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23import-by-domenic-denicola">import() - 由 Domenic Denicola 提出</a></li>
24
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23bigint--arbitrary-precision-integers-by-daniel-ehrenberg">BigInt – 任意精度整数,由 Daniel Ehrenberg 提出</a></li>
25
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23promiseallsettled-by-jason-williams-robert-pamely-and--mathias-bynens">Promise.allSettled - 由 Jason Williams, Robert Pamely 和 Mathias Bynens 提出</a></li>
26
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23globalthis-by-jordan-harband">globalThis - 由 Jordan Harband 提出</a></li>
27
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23for-in-mechanics-by-kevin-gibbons">for-in 机制 - 由 Kevin Gibbons 提出</a></li>
28
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23optional-chaining-by-gabriel-isenberg-claude-pache-dustin-savery">可选链 - 由 Gabriel Isenberg, Claude Pache, Dustin Savery 提出</a></li>
29
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23nullish-coalescing-operator-by-gabriel-isenberg">空值合并运算符 - 由 Gabriel Isenberg 提出</a></li>
30
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23importmeta-by-domenic-denicola">import.meta - 由 Domenic Denicola 提出</a></li>
31
+ <li><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23export--as-ns-from-mod">export * as ns from “mod”</a></li>
32
+ </ul>
33
+ <h2 id="String-prototype-matchAll-由-Jordan-Harband-提出"><a href="#String-prototype-matchAll-由-Jordan-Harband-提出" class="headerlink" title="String.prototype.matchAll - 由 Jordan Harband 提出"></a><a target="_blank" rel="noopener" href="https://pawelgrzybek.com/whats-new-in-ecmascript-2020/#stringprototypematchall-by-jordan-harband">String.prototype.matchAll - 由 Jordan Harband 提出</a></h2><p><code>String.prototype</code> 的 <code>match()</code> 方法仅返回完整的匹配结果,却不会返回特定正则表达式组(Regex groups)的信息。感谢 <a href="https://link.zhihu.com/?target=https://twitter.com/ljharb">Jordan Harband</a> 提出的 <a href="https://link.zhihu.com/?target=https://github.c%253C/code%253E%25%253C/code%253E25%253C/code%253E25%253C/code%253E3C/code%253Eom/tc39/proposal-string-matchall">String.prototype.matchAll 协议</a>,它返回了远比 match() 多得多的信息——它返回的迭代器不仅包括精确的匹配结果,还有全部的正则模式捕获结果。你还记得由 Gorkem Yakin 和 Daniel Ehrenberg 在 ECMAScript 2018 中新增的<a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2018/%23regexp-named-capture-groups-by-gorkem-yakin-and-daniel-ehrenberg">命名捕获组</a>吗? matchAll() 方法完美实现了它。我们举个例子说明。 </p>
34
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 译者注:match() 方法</span></span><br><span class="line">consttext = <span class="string">&quot;From 2019.01.29 to 2019.01.30&quot;</span>;</span><br><span class="line">constregexp = <span class="regexp">/(?&lt;year&gt;\d&#123;4&#125;).(?&lt;month&gt;\d&#123;2&#125;).(?&lt;day&gt;\d&#123;2&#125;)/gu</span>;</span><br><span class="line">constresults = text.<span class="title function_">match</span>(regexp);</span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(results); <span class="comment">// [ &#x27;2019.01.29&#x27;, &#x27;2019.01.30&#x27; ]</span></span><br></pre></td></tr></table></figure>
35
+
36
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 译者注:matchAll() 方法,可以看到结果的 groups 为命名捕获组</span></span><br><span class="line">consttext = <span class="string">&quot;From 2019.01.29 to 2019.01.30&quot;</span>;</span><br><span class="line">constregexp = <span class="regexp">/(?&lt;year&gt;\d&#123;4&#125;).(?&lt;month&gt;\d&#123;2&#125;).(?&lt;day&gt;\d&#123;2&#125;)/gu</span>;</span><br><span class="line">constresults = <span class="title class_">Array</span>.<span class="title function_">from</span>(text.<span class="title function_">matchAll</span>(regexp));</span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(results);</span><br><span class="line"><span class="comment">// [</span></span><br><span class="line"><span class="comment">// [</span></span><br><span class="line"><span class="comment">// &#x27;2019.01.29&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;2019&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;01&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;29&#x27;,</span></span><br><span class="line"><span class="comment">// index: 5,</span></span><br><span class="line"><span class="comment">// input: &#x27;From 2019.01.29 to 2019.01.30&#x27;,</span></span><br><span class="line"><span class="comment">// groups: [Object: null prototype] &#123; year: &#x27;2019&#x27;, month: &#x27;01&#x27;, day: &#x27;29&#x27; &#125;</span></span><br><span class="line"><span class="comment">// ],</span></span><br><span class="line"><span class="comment">// [</span></span><br><span class="line"><span class="comment">// &#x27;2019.01.30&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;2019&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;01&#x27;,</span></span><br><span class="line"><span class="comment">// &#x27;30&#x27;,</span></span><br><span class="line"><span class="comment">// index: 19,</span></span><br><span class="line"><span class="comment">// input: &#x27;From 2019.01.29 to 2019.01.30&#x27;,</span></span><br><span class="line"><span class="comment">// groups: [Object: null prototype] &#123; year: &#x27;2019&#x27;, month: &#x27;01&#x27;, day: &#x27;30&#x27; &#125;</span></span><br><span class="line"><span class="comment">// ]</span></span><br><span class="line"><span class="comment">// ]</span></span><br></pre></td></tr></table></figure>
37
+
38
+ <h2 id="import-由-Domenic-Denicola-提出"><a href="#import-由-Domenic-Denicola-提出" class="headerlink" title="import() - 由 Domenic Denicola 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23import-by-domenic-denicola">import() - 由 Domenic Denicola 提出</a></h2><p>ECMAScript 2015 引入了静态模块,与之相对应的是, 由 <a href="https://link.zhihu.com/?target=https://twitter.com/domenic">Domenic Denicola</a> 提出的可以按需获取的<a href="https://link.zhihu.com/?target=https://github.com/tc39/proposal-dynamic-import">动态 import</a>. 该类函数格式(它并非继承自 <code>Function.prototype</code>)返回了一个强大的 promise 函数,使得诸如按需引入、可计算模块名以及脚本内计算均成为可能。</p>
39
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">constmodulePage = <span class="string">&#x27;page.js&#x27;</span>;</span><br><span class="line"><span class="title function_">import</span>(modulePage).<span class="title function_">then</span>(<span class="function">(<span class="params"><span class="variable language_">module</span></span>) =&gt;</span> &#123;</span><br><span class="line"> <span class="variable language_">module</span>.<span class="title function_">default</span>();</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line">(<span class="title function_">async</span>()=&gt;&#123;</span><br><span class="line"> consthelpersModule=<span class="string">&#x27;helpers.js&#x27;</span>;</span><br><span class="line"> constmodule=<span class="keyword">await</span> <span class="title function_">import</span>(helpersModule)</span><br><span class="line"> consttotal=<span class="variable language_">module</span>.<span class="title function_">sum</span>(<span class="number">2</span>,<span class="number">2</span>);</span><br><span class="line">&#125;)();</span><br></pre></td></tr></table></figure>
40
+
41
+ <h2 id="BigInt-–-任意精度整数,由-Daniel-Ehrenberg-提出"><a href="#BigInt-–-任意精度整数,由-Daniel-Ehrenberg-提出" class="headerlink" title="BigInt – 任意精度整数,由 Daniel Ehrenberg 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23bigint--arbitrary-precision-integers-by-daniel-ehrenberg">BigInt – 任意精度整数,由 Daniel Ehrenberg 提出</a></h2><p>感谢 <a href="https://link.zhihu.com/?target=https://twitter.com/littledan">Daniel Ehrenberg</a> 让 <code>Number.MAX_SAFE_INTEGER</code> 不再是 JavaScript 的限制。<a href="https://link.zhihu.com/?target=https://github.com/tc39/proposal-bigint">BigInt 是一个新的原语</a>,它可以表示任意精度的整数。你可以通过 <code>BigInt</code> 方法,或是在一个数值后添加 <code>n</code> 后缀,来将一个 number 转换为 <code>bigint</code> 类型。</p>
42
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="title class_">Number</span>.<span class="property">MAX_SAFE_INTEGER</span></span><br><span class="line"><span class="comment">// 9007199254740991</span></span><br><span class="line"><span class="title class_">Number</span>.<span class="property">MAX_SAFE_INTEGER</span> + <span class="number">10</span> - <span class="number">10</span></span><br><span class="line"><span class="comment">// 9007199254740990 (译者注:精度丢失)</span></span><br><span class="line"><span class="title class_">BigInt</span>(<span class="title class_">Number</span>.<span class="property">MAX_SAFE_INTEGER</span>) + <span class="number">10n</span> - <span class="number">10n</span></span><br><span class="line"><span class="comment">// 9007199254740991n (译者注:计算结果为 bigint 类型)</span></span><br></pre></td></tr></table></figure>
43
+
44
+ <h2 id="Promise-allSettled-由-Jason-Williams-Robert-Pamely-和-Mathias-Bynens-提出"><a href="#Promise-allSettled-由-Jason-Williams-Robert-Pamely-和-Mathias-Bynens-提出" class="headerlink" title="Promise.allSettled - 由 Jason Williams, Robert Pamely 和 Mathias Bynens 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23promiseallsettled-by-jason-williams-robert-pamely-and--mathias-bynens">Promise.allSettled - 由 Jason Williams, Robert Pamely 和 Mathias Bynens 提出</a></h2><p>自从 ECMAScript ES2015 支持了仅有的两个 promise 连接符:<code>Promise.all()</code> 和 <code>Promise.race()</code> 以来,我们终于迎来了 <code>[Promise.allSettled()](https://link.zhihu.com/?target=https%3A//github.com/tc39/proposal-promise-allSettled)</code>, 感谢 Jason Williams, Robert Pamely 和 <a href="https://link.zhihu.com/?target=https://twitter.com/mathias">Mathias Bynens</a>. 它可以用在处理所有的 promise 都 settled 的情况,无论结果是 fulfilled 还是 rejected. 你看 ,无需 catch!</p>
45
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="title class_">Promise</span>.<span class="title function_">allSettled</span>([</span><br><span class="line"> <span class="title function_">fetch</span>(<span class="string">&quot;https://api.github.com/users/pawelgrzybek&quot;</span>).<span class="title function_">then</span>( <span class="function"><span class="params">data</span> =&gt;</span> data.<span class="title function_">json</span>() ),</span><br><span class="line"> <span class="title function_">fetch</span>(<span class="string">&quot;https://api.github.com/users/danjordan&quot;</span>).<span class="title function_">then</span>( <span class="function"><span class="params">data</span> =&gt;</span> data.<span class="title function_">json</span>() )</span><br><span class="line"> ]).<span class="title function_">then</span>( <span class="function"><span class="params">result</span> =&gt;</span> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`All profile settled`</span>) );</span><br></pre></td></tr></table></figure>
46
+
47
+ <p>不久后可能会有个 <code>Promise.any()</code> 方法加入 ECMAScript. 我前段时间在「<a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/promise-combinators-explained/">Promise 连接符解析</a>」一文中详细介绍过。</p>
48
+ <h2 id="globalThis-由-Jordan-Harband-提出"><a href="#globalThis-由-Jordan-Harband-提出" class="headerlink" title="globalThis - 由 Jordan Harband 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23globalthis-by-jordan-harband">globalThis - 由 Jordan Harband 提出</a></h2><p>所以在 JavaScript 中,全局的 <code>this</code> 到底是什么?在浏览器中它是 <code>window</code>, 在 worker 中它是 <code>self</code>, 在 Node.js 中它是 <code>global</code>, 在.. 如今这种混乱终于结束了!感谢 <a href="https://link.zhihu.com/?target=https://twitter.com/ljharb">Jordan Harband</a> 为我们带来的<code>[globalThis 关键字](https://zhuanlan.zhihu.com/p/133658121/h%3C/code%3Ettps://github.com/tc39/proposal-global)。</code></p>
49
+ <h2 id="for-in-机制-由-Kevin-Gibbons-提出"><a href="#for-in-机制-由-Kevin-Gibbons-提出" class="headerlink" title="for-in 机制 - 由 Kevin Gibbons 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23for-in-mechanics-by-kevin-gibbons">for-in 机制 - 由 Kevin Gibbons 提出</a></h2><p>ECMAScript 遗留了 for-in 循环顺序的详尽介绍待填补。<a href="https://link.zhihu.com/?target=https://twitter.com/bakkoting">Kevin Gibbons</a> 为此悉心付出,为 <a href="https://link.zhihu.com/?target=https://github.com/bakkot/for-in-exploration">for-in 机制定义了一套规则</a>,感谢他。</p>
50
+ <h2 id="可选链-由-Gabriel-Isenberg-Claude-Pache-Dustin-Savery-提出"><a href="#可选链-由-Gabriel-Isenberg-Claude-Pache-Dustin-Savery-提出" class="headerlink" title="可选链 - 由 Gabriel Isenberg, Claude Pache, Dustin Savery 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23optional-chaining-by-gabriel-isenberg-claude-pache-dustin-savery">可选链 - 由 Gabriel Isenberg, Claude Pache, Dustin Savery 提出</a></h2><p>对于对象属性的长链式访问易出错又不易读,感谢 <a href="https://link.zhihu.com/?target=https://twitter.com/the_gisenberg">Gabriel Isenberg</a>, <a href="https://link.zhihu.com/?target=https://github.com/claudepache">Claude Pache</a> 和 Dustin Savery 把这件事简化了。如果你是 TypeScript 用户,这对你来说并不新奇,因为 <a href="https://link.zhihu.com/?target=https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html%23optional-chaining">TypeScript 3.7</a> 版本早已实现了此功能。超爱它的!</p>
51
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 之前</span></span><br><span class="line">consttitle = data &amp;&amp; data.<span class="property">article</span> &amp;&amp; data.<span class="property">article</span>.<span class="property">title</span><span class="comment">// 之后</span></span><br><span class="line">consttitle = data?.<span class="property">article</span>?.<span class="property">title</span></span><br></pre></td></tr></table></figure>
52
+
53
+ <h2 id="空值合并运算符-由-Gabriel-Isenberg-提出"><a href="#空值合并运算符-由-Gabriel-Isenberg-提出" class="headerlink" title="空值合并运算符 - 由 Gabriel Isenberg 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23nullish-coalescing-operator-by-gabriel-isenberg">空值合并运算符 - 由 Gabriel Isenberg 提出</a></h2><p><a href="https://link.zhihu.com/?target=https://github.com/tc39/proposal-nullish-coalescing">空值合并提议</a>新增了一个处理默认值的便捷运算符。<a href="https://link.zhihu.com/?target=https://twitter.com/the_gisenberg">Gabriel Isenberg</a> 干得太棒了——该特性紧随「可选链」之后。与 <code>||</code> 相比,空值合并运算符 <code>??</code> 只会在左边的值严格等于 <code>null</code> 或 <code>undefined</code> 时起作用。</p>
54
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">&quot;&quot;</span>||<span class="string">&quot;default value&quot;</span><span class="comment">// default value</span></span><br><span class="line"><span class="string">&quot;&quot;</span>??<span class="string">&quot;default value&quot;</span><span class="comment">// &quot;&quot;</span></span><br></pre></td></tr></table></figure>
55
+
56
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">consttitle=data?.<span class="property">article</span>?.<span class="property">title</span> ?? <span class="string">&quot;What&#x27;s new in ECMAScript 2020&quot;</span></span><br></pre></td></tr></table></figure>
57
+
58
+ <h2 id="import-meta-由-Domenic-Denicola-提出"><a href="#import-meta-由-Domenic-Denicola-提出" class="headerlink" title="import.meta - 由 Domenic Denicola 提出"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23importmeta-by-domenic-denicola">import.meta - 由 Domenic Denicola 提出</a></h2><p><a href="https://link.zhihu.com/?target=https://twitter.com/domenic">Domenic Denicola</a> 提出的 <a href="https://link.zhihu.com/?target=https://github.com/tc39/proposal-import-meta">import.meta 提议</a>为当前运行的模块添加了一个特定 host 元数据对象。</p>
59
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="keyword">import</span>.<span class="property">meta</span>.<span class="property">url</span>) <span class="comment">// file:///Users/pawelgrzybek/main.js</span></span><br></pre></td></tr></table></figure>
60
+
61
+ <h2 id="export-as-ns-from-“mod”"><a href="#export-as-ns-from-“mod”" class="headerlink" title="export * as ns from “mod”"></a><a href="https://link.zhihu.com/?target=https://pawelgrzybek.com/whats-new-in-ecmascript-2020/%23export--as-ns-from-mod">export * as ns from “mod”</a></h2><p><a href="https://link.zhihu.com/?target=https://spectranaut.github.io/proposal-export-ns-from/">这是对 ES 规范的有力补充</a>,它允许开发者以新名称导出另一模块的命名空间外部对象。</p>
62
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">export</span> * <span class="keyword">as</span> ns <span class="keyword">from</span> <span class="string">&quot;mod&quot;</span></span><br></pre></td></tr></table></figure>
63
+
64
+ <p>以上就是 ES 2020 的所有新特性,新规范确定已半月有余,其中既有 TS 早已支持的大家喜闻乐见的可选链,也有让人匪夷所思的空值合并运算符 ??,不知你喜欢哪一个呢?快留言告诉我吧~</p>
65
+ <hr>
66
+ </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/20459.html">https://xuehuayu.cn/article/20459.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/21320.html">ES2020新特性js运算符 ?. 、?? 、??= 解释说明</a><a class="next" href="/article/35624.html">require().default:require模块的时候后面为什么要加一个default</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
67
+ const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
68
+ const locale = {
69
+ placeholder: '请正确填写昵称和邮箱,方便接收回复通知~',
70
+ sofa: '沙发空缺中,还不快抢~',
71
+ };
72
+ Waline.init({
73
+ el: '#vcomment',
74
+ serverURL: serverURL,
75
+ pageSize: '20',
76
+ visitor: true, // 阅读量统计
77
+ requiredMeta: ['nick', 'mail'],
78
+ emoji: [
79
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
80
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/qq',
81
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/tw-emoji',
82
+ ],
83
+ locale,
84
+ pageview: true
85
+ })
86
+ </script></div></div></div><div class="pure-u-1 pure-u-md-1-4 fixed-search hidden_mid_and_down"><div id="sidebar"><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/search.min.js"></script><div class="widget"><div class="widget-search"><input class="search" type="radio" name="search" value="baidu" id="baidu" checked="checked"/><label class="label" for="baidu" title="百度全站搜索">百度</label><input class="search" type="radio" name="search" value="google" id="google"/><label class="label" for="google" title="谷歌全站搜索">谷歌</label><input class="search" type="radio" name="search" value="self" id="self"/><label class="label" for="self" title="使用站内搜索">站内</label></div><div class="widget" id="search"><form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"/><input type="hidden" name="si" value="xuehuayu.cn"/><input type="hidden" name="cl" value="3"/><input type="hidden" name="ct" value="2097152"/><input type="hidden" name="s" value="on"/><input class="search-submit" type="submit" value=""/></form></div></div><script>$('input[type=radio][name=search]').change(function() {
87
+ var val = $(this).val()
88
+ var self = '<div class="search-form"><input id="local-search-input" placeholder="站内搜索,首次慢" type="search" name="q" results="0"><input class="search-submit" type="submit" value=""/><div id="local-search-result"></div></div>'
89
+ var google = '<form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="q" maxlength="30" placeholder="谷歌全站搜索"><input type="hidden" name="sitesearch" value="xuehuayu.cn"><input class="search-submit" type="submit" value=""/></form>'
90
+ var baidu = '<form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"><input type="hidden" name="si" value="xuehuayu.cn"><input type="hidden" name="cl" value="3"><input type="hidden" name="ct" value="2097152"><input type="hidden" name="s" value="on"><input class="search-submit" type="submit" value=""/></form>'
91
+
92
+ if (val === 'self') {
93
+ $('#search').html(self)
94
+ var search_path = 'search.xml';
95
+ if (search_path.length == 0) {
96
+ search_path = 'search.xml';
97
+ }
98
+ var path = 'https://cdn.staticaly.com/gh/npljy/npljy.github.io/main/' + search_path;
99
+ searchFunc(path, 'local-search-input', 'local-search-result');
100
+ } else if (val === 'baidu') {
101
+ $('#search').html(baidu)
102
+ } else if (val === 'google') {
103
+ $('#search').html(google)
104
+ }
105
+ })</script><div class="widget widget-wxmp"><img alt="微信公众号" width="100%" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/mp-mini.jpg"/></div><div class="widget widget-categories"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CDN/">CDN</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/IDE/">IDE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/git/">git</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/hexo/">hexo</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%AC%E5%85%B1%E8%8A%82%E6%97%A5/">公共节日</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%88%86%E4%BA%AB/">分享</a><span class="category-list-count">29</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a><span class="category-list-count">191</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">1</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/">网络协议</a><span class="category-list-count">1</span></li></ul></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%8D%9A%E5%AE%A2/">博客</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B7%A5%E5%85%B7/">工具</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/">广告过滤</a><span class="category-list-count">8</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E8%A7%86%E9%A2%91%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">视频电视小说漫画资讯音乐</a><span class="category-list-count">2</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%AD%A3%E5%88%99/">正则</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E8%AE%AF/">资讯</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BD%BB%E6%9D%BE%E4%B8%80%E5%88%BB/">轻松一刻</a><span class="category-list-count">1</span></li></ul></div><div class="widget widget-tags"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 15px;">原创</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 15px;">转载</a> <a href="/tags/%E6%89%8B%E5%86%99/" style="font-size: 15px;">手写</a> <a href="/tags/%E7%96%AB%E6%83%85/" style="font-size: 15px;">疫情</a> <a href="/tags/%E5%A8%B1%E4%B9%90/" style="font-size: 15px;">娱乐</a></div></div><div class="widget widget-recent-posts"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/article/c5576490.html">面试准备</a></li><li class="post-list-item"><a class="post-list-link" href="/article/84c9ccd6.html">精读《SolidJS》</a></li><li class="post-list-item"><a class="post-list-link" href="/article/53803e6.html">git提交注释规范</a></li><li class="post-list-item"><a class="post-list-link" href="/article/a4145266.html">前端数组拍平flat一行代码</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bedea419.html">一道前端this面试题</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bf7e7421.html">git多账号配置</a></li></ul></div><div class="widget widget-links"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/npljy?utm_source=xuehuayu.cn" title="GitHub" target="_blank">GitHub</a><ul></ul><a href="https://laonongmin.online?utm_source=xuehuayu.cn" title="看看" target="_blank">看看</a><ul></ul><a href="https://cainiaoblog.cn?utm_source=xuehuayu.cn" title="菜鸟博客" target="_blank">菜鸟博客</a><ul></ul><a href="mailto:cainiaoblog@126.com" title="友链联系" target="_blank">友链联系</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer"><div class="flex-block justify-center align-center flex-wrap"><a class="gxba-link" id="gxba" rel="nofollow" target="_blank" href="http://beian.miit.gov.cn/">京ICP备20007647号-2</a><a class="gaba-link" id="gaba-link" rel="nofollow" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031264"><img class="nofancybox" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/gaba.png" alt=""/><span id="gaba">京公网安备 11010802031264号</span><span style="padding-right: 10px;"></span></a><span>Copyright © 2023 </span><a href="/." rel="nofollow">前端壹菜鸟. </a><script>(function(){
106
+ var cnb =window.location.origin.indexOf('cainiaoblog') !==-1
107
+ if (cnb) {
108
+ var gxba =document.getElementById('gxba')
109
+ var gaba =document.getElementById('gaba')
110
+ var gabaLink =document.getElementById('gaba-link')
111
+ gxba.innerText ='京ICP备20007647号-1'
112
+ gaba.innerText ='京公网安备 11010802031254号'
113
+ gabaLink.setAttribute('href','http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031254')
114
+ }
115
+ })()</script></div><div class="flex-block justify-center align-center flex-wrap"><a rel="nofollow" target="_blank" href="https://v6.51.la/s/Guz3lwHCsVme9Cu"><div class="busuanzi_container" id="busuanzi_container"><span class="busuanzi_container_site_pv" id="busuanzi_container_site_pv">访问量:<span id="busuanzi_value_site_pv"><i class="fa fa-spinner"></i></span></span><span class="busuanzi_container_site_uv" id="busuanzi_container_site_uv">访客数:<span id="busuanzi_value_site_uv"><i class="fa fa-spinner"></i></span></span><span style="padding-right: 10px;"></span></div></a><a rel="nofollow" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&amp;utm_medium=referral"><span style="font-weight:bold;letter-spacing: 1px;">本网站由 </span><img class="nofancybox" height="32" style="vertical-align: middle" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/upy_logo.min.svg" alt=""/><span style="font-weight:bold;letter-spacing: 1px;">提供CDN加速/云存储服务</span></a><span style="padding-right: 10px;"></span><a rel="nofollow" style="font-size:18px;font-weight:bold;vertical-align: middle" target="_blank" title="注册就送代金券可直接使用" href="https://console.upyun.com/register/?invite=HyDsjZHIL">注册</a></div></div></div></div><a class="show" id="rocket" href="#top"></a><div class="darkmode-toggle">🌓</div><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/totop.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/dark.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/codeblock-resizer.min.js"></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/smartresize.min.js"></script></div></body></html>
@@ -0,0 +1,263 @@
1
+ <!DOCTYPE html><html lang="zh-CN" data-dark><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="前端壹菜鸟,记录工作难题,关注前端知识,收集精彩博文,做技术的搬运工"><meta name="msvalidate.01" content="0FE4D8B3381D3D87088996B886E1E2BD"><title>一个前端失业者的面试之旅 | 前端壹菜鸟</title><link rel="stylesheet" type="text/css" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/css/style.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/normalize.css@latest/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/pure-min.min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/purecss@latest/build/grids-responsive-min.css"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"><link rel="icon" mask="" sizes="any" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="Shortcut Icon" type="image/x-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.ico"><link rel="apple-touch-icon" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="apple-touch-icon-precomposed" href="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/blog.png"><link rel="alternate" type="application/atom+xml" href="/atom.xml"><script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8385136408348258"></script><script src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script><script>(function(){
2
+ var bp = document.createElement('script');
3
+ var curProtocol = window.location.protocol.split(':')[0];
4
+ if (curProtocol === 'https'){
5
+ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
6
+ }
7
+ else{
8
+ bp.src = 'http://push.zhanzhang.baidu.com/push.js';
9
+ }
10
+ var s = document.getElementsByTagName("script")[0];
11
+ s.parentNode.insertBefore(bp, s);
12
+ })();
13
+ </script><script>(function(){
14
+ var src = 'https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f28525f2db83acfaaf6e696dba';
15
+ document.write('<script src="' + src + '" id="sozz"><\/script>');
16
+ })();
17
+ </script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
18
+ </script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
19
+ </script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">一个前端失业者的面试之旅</h1><div class="post-meta"><span class="date">2020-03-27</span><span> | </span><span class="tag"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载 </a></span><span> | </span><span class="category"><a href="/categories/%E5%88%86%E4%BA%AB/">分享 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 2.6k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 8</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/20613.html#vcomment"><span class="waline-comment-count" data-path="/article/20613.html"></span><span> 条评论</span></a><div class="post-content"><p><code>原文:https://mp.weixin.qq.com/s/1mE_DfTsMs6PnprMB0XRSw</code><br>下面整理了一下面试的几家公司的面试题,大家有需要的看看,有问题一起探讨!</p>
20
+ <span id="more"></span>
21
+ <p><strong>一. 某在线教育公司</strong></p>
22
+ <p>职位: 全栈工程师</p>
23
+ <p>简述: 一共一下午,两面现场技术。</p>
24
+ <p><strong>第一面</strong></p>
25
+ <p>比较年轻的一个小哥,给人一看就是大佬的感觉,上来看了一下简历,开始做了自我介绍后,进入提问环节。</p>
26
+ <ol>
27
+ <li><p>说一下对bind,call,apply三个函数的认识,自己实现一下bind方法。</p>
28
+ </li>
29
+ <li><p>前端的requestAnimationFrame了解吗?有使用过吗?说一下使用场景。</p>
30
+ </li>
31
+ <li><p>对前端性能优化有什么了解?有在之前的工作中解决过性能问题么?一般都通过那几个方面去优化的?</p>
32
+ </li>
33
+ <li><p>对前后端跨域可以说一下吗?有碰到过跨域问题吗?如何解决跨域的?</p>
34
+ </li>
35
+ <li><p>介绍一下对nodejs的异步IO原理。</p>
36
+ </li>
37
+ <li><p>一道简单的算法题,实现输入一个字符串,返回字符串翻转输出。</p>
38
+ </li>
39
+ </ol>
40
+ <p><strong>第二面</strong></p>
41
+ <p>进来气场就不一样,年纪差不多35以上,自我介绍了一下,便开始提问环节。</p>
42
+ <ol>
43
+ <li><p>说一下之前应用服务的部署模式。</p>
44
+ </li>
45
+ <li><p>对nodejs的进程维护有了解过么?你们有遇到过nodejs一些内存泄露方面的问题吗?说一下内存泄露。</p>
46
+ </li>
47
+ <li><p>之前用redis做缓存中间件是为了解决什么问题?说一下你们关于redis的设计架构。</p>
48
+ </li>
49
+ <li><p>说一下你做过最有成长的一个项目,简单总结一下。 </p>
50
+ </li>
51
+ <li><p>讲一下你对之前项目里使用的消息中间件的理解,为什么引入这个东西,它解决了什么问题。</p>
52
+ </li>
53
+ <li><p>他开始介绍他们团队做的事。</p>
54
+ </li>
55
+ </ol>
56
+ <p>后面就是HR面试了,两个HR问了一些情况后,留了微信便离开了,公司比较偏,找了半天公交站,坐到地铁站,因为心事重重,结果地铁还给坐反了,回家已经晚上11点多。</p>
57
+ <hr>
58
+ <p><strong>二. 某创业公司</strong></p>
59
+ <p>因为我是有点想加入创业团队的,想着自己还年轻,还能加班,况且万一运气好蹭个大佬,从此坐上开挂的列车,走上人生巅峰呢!便去了一个创业公司面试。</p>
60
+ <p>职位:全栈工程师</p>
61
+ <p>简述:中午12:30去面试,不理解为什么在正中午面,大概是为了考验候选人?我去的时候面试大佬正好出来扔外卖盒,看到我背个包喊出了我的名字,心想”我去,还没面试,大佬这就记住我了?so excited”,因为公司就三个人,而且面我的大佬还是其他公司在职的,只是偶尔会过来,所以一共一面技术。</p>
62
+ <p>*<em><strong>第</strong>一面</em>*</p>
63
+ <p>上来就是做题,心态完全没有调整过来,贼紧张。</p>
64
+ <ol>
65
+ <li><p>手写一下快速排序算法。</p>
66
+ </li>
67
+ <li><p>看你简历有加密算法的内容,简单讲一下关于加密算法相关的内容。</p>
68
+ </li>
69
+ <li><p>说一下https的工作原理,里面涉及到的加密算法都有哪些?</p>
70
+ </li>
71
+ <li><p>设计一个后台管理系统,从数据库表设计到后端服务提供。</p>
72
+ </li>
73
+ <li><p>一道算法题,一个数组中找出所有相同的元素,并且做出分类,在彩笔白板上写完,面试官笑了一下,js写还真方便。</p>
74
+ </li>
75
+ </ol>
76
+ <p>因为没有hr,大佬跟我谈了薪资,并且告诉我他们现在已经在盈利了,年终可以分很多…</p>
77
+ <hr>
78
+ <p><strong>三. 某数据广告公司(500人左右)</strong></p>
79
+ <p>在这里是我遇到真正最难的一次面试,被大佬虐的体无完肤,最后还是拿到公司的offer。首先面试的是公司的类似于“基础建设”的部门,应该是只搞技术不做业务的部门,但是需要的比较资深的nodejs大牛,最终不合适,但是大佬推荐到了一个业务部门,这边的又经历了两次面试,最终拿到offer,一共经历了三轮技术面</p>
80
+ <p>职位:全栈工程师</p>
81
+ <p><strong>第一面</strong></p>
82
+ <p>未面试通过,简历被推荐到另一个部门。</p>
83
+ <ol>
84
+ <li><p>说一下nodejs里对Buffer数据类型的认识,对于初始化的Buffer,可以实现增加长度吗?</p>
85
+ </li>
86
+ <li><p>对nodejs的异步IO的认识,异步IO内部的工作原理,以及内部线程池相关内容。</p>
87
+ </li>
88
+ <li><p>说一说Linux的几种IO模型,分别描述一下是怎么一回事。</p>
89
+ </li>
90
+ <li><p>多进程部署的Nodejs应用有何优缺点,简述一下进程之间的通信方式。</p>
91
+ </li>
92
+ <li><p>TCP三次握手四次挥手的具体细节。</p>
93
+ </li>
94
+ <li><p>Nodejs源码层面的一些内容。</p>
95
+ </li>
96
+ </ol>
97
+ <p><strong>第二面</strong></p>
98
+ <ol>
99
+ <li><p>说一下Vue和React的认识,做一个简单的对比。</p>
100
+ </li>
101
+ <li><p>React的Dom的diff算法描述一下。</p>
102
+ </li>
103
+ <li><p>浏览器cookie和session的认识。</p>
104
+ </li>
105
+ <li><p>跨域分哪几种类型,如何解决各个跨域的问题。</p>
106
+ </li>
107
+ <li><p>nodejs的setTimeOut不准时的原因分析。</p>
108
+ </li>
109
+ </ol>
110
+ <p><strong>第三面</strong></p>
111
+ <ol>
112
+ <li><p>nodejs进程间通信方式。</p>
113
+ </li>
114
+ <li><p>nodejs高并发怎么理解?为什么不适合运算量大的操作?如果我要用实现运算量大的操作有什么方式?</p>
115
+ </li>
116
+ <li><p>redis缓存系统的相关内容。</p>
117
+ </li>
118
+ <li><p>在之前工作中做的项目中有收获的,系统描述一下收获了什么?</p>
119
+ </li>
120
+ <li><p>介绍了一些他们使用的技术栈和正在做的事情。</p>
121
+ </li>
122
+ </ol>
123
+ <p>HR面试也给到了非常不错的薪资,心里觉得先进去,后面再找机会进一面的大佬的团队,随着有了两个offer心情也逐渐放松了。</p>
124
+ <hr>
125
+ <p><strong>四. <strong>TMD</strong>某条大厂</strong></p>
126
+ <p>**<br>**</p>
127
+ <p>大厂就是大厂,一来就给发个牌带上,面试官很守时也很客气,我被带到了一个会议室,开始了面试之旅,一共三面技术面。</p>
128
+ <p>职业:全栈工程师</p>
129
+ <p><strong>第一面</strong></p>
130
+ <p>首先上来给了一套题,两大业,我拿到后,翻看了一下,汗水直流啊!一边擦汗一边做!题目做完开始按照做的题提问环节。</p>
131
+ <ol>
132
+ <li><p>关于css3里阴影的一些知识。</p>
133
+ </li>
134
+ <li><p>div布局相关的知识,涉及双翼齐飞,盒模型等。</p>
135
+ </li>
136
+ <li><p>javascript同步异步的输出顺序问题。</p>
137
+ </li>
138
+ <li><p>关于Promise的then,catch,reject,all,race一些api的用法问题。</p>
139
+ </li>
140
+ <li><p>一道关于动态规划的算法题。</p>
141
+ </li>
142
+ <li><p>一道概率论关于摇硬币正反面概率的问题。</p>
143
+ </li>
144
+ </ol>
145
+ <p>问完后,接下来又做了一套题…</p>
146
+ <p>这一套关于nodejs的,主要涉及流(stream)与Buffer,事件触发器(EventEmitter)等相关模块的认识与使用。这一套基本满分通过,因为之前专门学习过这几个模块,接下来进入二面。</p>
147
+ <p><strong>第二面</strong></p>
148
+ <p>面试官是一个漂亮的妹子,但是非常犀利,上来做了自我介绍后,直接进入正题。</p>
149
+ <ol>
150
+ <li><p>可以手写一些Promise么?不是写Promise怎么用哦,让你实现一下Promise。^O^</p>
151
+ </li>
152
+ <li><p>nodejs中的异步回调中的错误怎么处理。</p>
153
+ </li>
154
+ <li><p>闭包为什么会造成内存泄漏? </p>
155
+ </li>
156
+ <li><p>javascript的垃圾回收机制讲一下。</p>
157
+ </li>
158
+ <li><p>了解express的内部原理么?简单实现一下。</p>
159
+ </li>
160
+ <li><p>写一下希尔排序算法,注意空间和时间复杂度。</p>
161
+ </li>
162
+ </ol>
163
+ <p><strong>第三面</strong></p>
164
+ <p>由于三面面试官出差,中间隔了一周多。后来约到面试后,一位非常年轻的小哥,大概刚30左右的样子,很儒雅客气。</p>
165
+ <ol>
166
+ <li><p>从页面输入一个链接到加载成功过程中发生了什么,尽可能详细。</p>
167
+ </li>
168
+ <li><p>https相关原理,涉及中间人攻击,证书协议,加解密内容。</p>
169
+ </li>
170
+ <li><p>nodejs的运行原理,有哪些优缺点?对nodejs怎样的看法?</p>
171
+ </li>
172
+ <li><p>之前项目中的一些总结。</p>
173
+ </li>
174
+ <li><p>聊了一些关于他们正在做的事。</p>
175
+ </li>
176
+ </ol>
177
+ <p>面试体验很好,HR也非常nice,拿到了满意的offer,最终因为其他原因没有去这边,HR和三面面试官也非常客气的跟我说,后面想去还可以联系他,非常满意的面试体验,为头条打波广告。</p>
178
+ <hr>
179
+ <p>**<br>**</p>
180
+ <p><strong>五. 某金融巨头</strong></p>
181
+ <p>说句老实话,面试其实不是非常难,而是简历太不容易能被捞起来,而且我是一年半的,团队基本招3年起步的,我是通过内推渠道才被推到团队的,后来进来发现,这简历是真不容易能被捞起来,全程一共两面技术。</p>
182
+ <p>职位:前端&#x2F;Nodejs工程师</p>
183
+ <p><strong>第一面</strong></p>
184
+ <ol>
185
+ <li><p>前端模块化,使用过的打包工具有哪些,打包原理,关于webpack多一些。</p>
186
+ </li>
187
+ <li><p>简历有做过断点续传的一些内容,问了一些断点续传在实现方面的一些内容。</p>
188
+ </li>
189
+ <li><p>cookie与session原理,还有token相关的一些内容。</p>
190
+ </li>
191
+ <li><p>React的使用经验,react-router的内部原理解释。</p>
192
+ </li>
193
+ <li><p>XSS,CSRF攻击过程,前端怎么去防止这类攻击。</p>
194
+ </li>
195
+ <li><p>nodejs的事件循环怎么理解?事件循环里各个阶段的认识。</p>
196
+ </li>
197
+ </ol>
198
+ <p><strong>第二面</strong></p>
199
+ <ol>
200
+ <li><p>Nodejs的内部运行机制,异步非阻塞IO与事件循环原理,事件循环中的每个阶段描述。</p>
201
+ </li>
202
+ <li><p>前端数据流管理工具用过哪些?解释一下这数据流管理工具出现的原因,解决的问题和它的本质原理。</p>
203
+ </li>
204
+ <li><p>redux这一类的工具在解决什么问题,它的本质原理详述。</p>
205
+ </li>
206
+ <li><p>在使用开源框架的时候有没有发现一些坑,如何去处理这些坑的。</p>
207
+ </li>
208
+ <li><p>做过的所有项目简单梳理一遍,有哪些收获和心得描述一下。</p>
209
+ </li>
210
+ </ol>
211
+ <hr>
212
+ <p><strong>总结一下</strong></p>
213
+ <p>大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想来蚂蚁这边,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。</p>
214
+ </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/20613.html">https://xuehuayu.cn/article/20613.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/33899.html">要面试了,数据结构和算法太弱怎么办</a><a class="next" href="/article/15569.html">ES6语法知识点补充</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
215
+ const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
216
+ const locale = {
217
+ placeholder: '请正确填写昵称和邮箱,方便接收回复通知~',
218
+ sofa: '沙发空缺中,还不快抢~',
219
+ };
220
+ Waline.init({
221
+ el: '#vcomment',
222
+ serverURL: serverURL,
223
+ pageSize: '20',
224
+ visitor: true, // 阅读量统计
225
+ requiredMeta: ['nick', 'mail'],
226
+ emoji: [
227
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
228
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/qq',
229
+ 'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/tw-emoji',
230
+ ],
231
+ locale,
232
+ pageview: true
233
+ })
234
+ </script></div></div></div><div class="pure-u-1 pure-u-md-1-4 fixed-search hidden_mid_and_down"><div id="sidebar"><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/search.min.js"></script><div class="widget"><div class="widget-search"><input class="search" type="radio" name="search" value="baidu" id="baidu" checked="checked"/><label class="label" for="baidu" title="百度全站搜索">百度</label><input class="search" type="radio" name="search" value="google" id="google"/><label class="label" for="google" title="谷歌全站搜索">谷歌</label><input class="search" type="radio" name="search" value="self" id="self"/><label class="label" for="self" title="使用站内搜索">站内</label></div><div class="widget" id="search"><form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"/><input type="hidden" name="si" value="xuehuayu.cn"/><input type="hidden" name="cl" value="3"/><input type="hidden" name="ct" value="2097152"/><input type="hidden" name="s" value="on"/><input class="search-submit" type="submit" value=""/></form></div></div><script>$('input[type=radio][name=search]').change(function() {
235
+ var val = $(this).val()
236
+ var self = '<div class="search-form"><input id="local-search-input" placeholder="站内搜索,首次慢" type="search" name="q" results="0"><input class="search-submit" type="submit" value=""/><div id="local-search-result"></div></div>'
237
+ var google = '<form class="search-form" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="q" maxlength="30" placeholder="谷歌全站搜索"><input type="hidden" name="sitesearch" value="xuehuayu.cn"><input class="search-submit" type="submit" value=""/></form>'
238
+ var baidu = '<form class="search-form" action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank"><input type="search" name="word" maxlength="30" placeholder="百度全站搜索"><input type="hidden" name="si" value="xuehuayu.cn"><input type="hidden" name="cl" value="3"><input type="hidden" name="ct" value="2097152"><input type="hidden" name="s" value="on"><input class="search-submit" type="submit" value=""/></form>'
239
+
240
+ if (val === 'self') {
241
+ $('#search').html(self)
242
+ var search_path = 'search.xml';
243
+ if (search_path.length == 0) {
244
+ search_path = 'search.xml';
245
+ }
246
+ var path = 'https://cdn.staticaly.com/gh/npljy/npljy.github.io/main/' + search_path;
247
+ searchFunc(path, 'local-search-input', 'local-search-result');
248
+ } else if (val === 'baidu') {
249
+ $('#search').html(baidu)
250
+ } else if (val === 'google') {
251
+ $('#search').html(google)
252
+ }
253
+ })</script><div class="widget widget-wxmp"><img alt="微信公众号" width="100%" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/mp-mini.jpg"/></div><div class="widget widget-categories"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/CDN/">CDN</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/IDE/">IDE</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/git/">git</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/hexo/">hexo</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%85%AC%E5%85%B1%E8%8A%82%E6%97%A5/">公共节日</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%88%86%E4%BA%AB/">分享</a><span class="category-list-count">29</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a><span class="category-list-count">191</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">1</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/">网络协议</a><span class="category-list-count">1</span></li></ul></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%8D%9A%E5%AE%A2/">博客</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B7%A5%E5%85%B7/">工具</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/">广告过滤</a><span class="category-list-count">8</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%B9%BF%E5%91%8A%E8%BF%87%E6%BB%A4/%E8%A7%86%E9%A2%91%E7%94%B5%E8%A7%86%E5%B0%8F%E8%AF%B4%E6%BC%AB%E7%94%BB%E8%B5%84%E8%AE%AF%E9%9F%B3%E4%B9%90/">视频电视小说漫画资讯音乐</a><span class="category-list-count">2</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%AD%A3%E5%88%99/">正则</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%B5%8F%E8%A7%88%E5%99%A8/">浏览器</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E8%AE%AF/">资讯</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%BD%BB%E6%9D%BE%E4%B8%80%E5%88%BB/">轻松一刻</a><span class="category-list-count">1</span></li></ul></div><div class="widget widget-tags"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 15px;">原创</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 15px;">转载</a> <a href="/tags/%E6%89%8B%E5%86%99/" style="font-size: 15px;">手写</a> <a href="/tags/%E7%96%AB%E6%83%85/" style="font-size: 15px;">疫情</a> <a href="/tags/%E5%A8%B1%E4%B9%90/" style="font-size: 15px;">娱乐</a></div></div><div class="widget widget-recent-posts"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/article/c5576490.html">面试准备</a></li><li class="post-list-item"><a class="post-list-link" href="/article/84c9ccd6.html">精读《SolidJS》</a></li><li class="post-list-item"><a class="post-list-link" href="/article/53803e6.html">git提交注释规范</a></li><li class="post-list-item"><a class="post-list-link" href="/article/a4145266.html">前端数组拍平flat一行代码</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bedea419.html">一道前端this面试题</a></li><li class="post-list-item"><a class="post-list-link" href="/article/bf7e7421.html">git多账号配置</a></li></ul></div><div class="widget widget-links"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/npljy?utm_source=xuehuayu.cn" title="GitHub" target="_blank">GitHub</a><ul></ul><a href="https://laonongmin.online?utm_source=xuehuayu.cn" title="看看" target="_blank">看看</a><ul></ul><a href="https://cainiaoblog.cn?utm_source=xuehuayu.cn" title="菜鸟博客" target="_blank">菜鸟博客</a><ul></ul><a href="mailto:cainiaoblog@126.com" title="友链联系" target="_blank">友链联系</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer"><div class="flex-block justify-center align-center flex-wrap"><a class="gxba-link" id="gxba" rel="nofollow" target="_blank" href="http://beian.miit.gov.cn/">京ICP备20007647号-2</a><a class="gaba-link" id="gaba-link" rel="nofollow" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031264"><img class="nofancybox" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/gaba.png" alt=""/><span id="gaba">京公网安备 11010802031264号</span><span style="padding-right: 10px;"></span></a><span>Copyright © 2023 </span><a href="/." rel="nofollow">前端壹菜鸟. </a><script>(function(){
254
+ var cnb =window.location.origin.indexOf('cainiaoblog') !==-1
255
+ if (cnb) {
256
+ var gxba =document.getElementById('gxba')
257
+ var gaba =document.getElementById('gaba')
258
+ var gabaLink =document.getElementById('gaba-link')
259
+ gxba.innerText ='京ICP备20007647号-1'
260
+ gaba.innerText ='京公网安备 11010802031254号'
261
+ gabaLink.setAttribute('href','http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802031254')
262
+ }
263
+ })()</script></div><div class="flex-block justify-center align-center flex-wrap"><a rel="nofollow" target="_blank" href="https://v6.51.la/s/Guz3lwHCsVme9Cu"><div class="busuanzi_container" id="busuanzi_container"><span class="busuanzi_container_site_pv" id="busuanzi_container_site_pv">访问量:<span id="busuanzi_value_site_pv"><i class="fa fa-spinner"></i></span></span><span class="busuanzi_container_site_uv" id="busuanzi_container_site_uv">访客数:<span id="busuanzi_value_site_uv"><i class="fa fa-spinner"></i></span></span><span style="padding-right: 10px;"></span></div></a><a rel="nofollow" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&amp;utm_medium=referral"><span style="font-weight:bold;letter-spacing: 1px;">本网站由 </span><img class="nofancybox" height="32" style="vertical-align: middle" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/img/upy_logo.min.svg" alt=""/><span style="font-weight:bold;letter-spacing: 1px;">提供CDN加速/云存储服务</span></a><span style="padding-right: 10px;"></span><a rel="nofollow" style="font-size:18px;font-weight:bold;vertical-align: middle" target="_blank" title="注册就送代金券可直接使用" href="https://console.upyun.com/register/?invite=HyDsjZHIL">注册</a></div></div></div></div><a class="show" id="rocket" href="#top"></a><div class="darkmode-toggle">🌓</div><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/totop.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/dark.min.js" async></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/codeblock-resizer.min.js"></script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/smartresize.min.js"></script></div></body></html>