メーカーは3年インタビュアー - 二つの顔の質問に(あまりにも難しいです)

注目のインタビューの質問

メーカー側面の質問、私たちは基本的にGoogleで磨くことができ、あなたが死ぬことを見ていない、見られます。問題をブラッシングすることにより、実質的に85%を超えるんです。

話題のほとんどは二つの面が仕事の技術的な観点から抽出されているので、しかし、第二のインタビューで、あなたが技術的なポイントの多くが含ま質問の中に、上昇を無駄に難しさを見つけるだろう、稀に、インターネット上の元のトピックに見つかりませんこれは、ソリューションを設計するために、自分の想像力と技術力を通じて候補者を必要とします。これは、候補者のフロントエンド機能のテストです。

質問1:どのようなウィンドウでプラットフォームの互換性の問題を処理すると、MACときnodejs開発

難易度:アリP5〜P6

多くの候補者は1つが自分堪能nodejs開発まで、しかし、インタビューの後、実際には、デモの水準で推移していることが見つかった例はそれを実行し、公式ウェブサイト上でダウンロードし、それが江沢民紫という事実をnodejs感じるだけであると言います。

実際には、本当に大規模なエンジニアリングツールのCLIに取り組んnodejsによって、あなたはnodejs APIのも、公式サイトには問題があると信憑性はないことを、多くのWindowsとMacのシステムの互換性の問題があることがわかります。

私は、いくつかのランダムな点を列挙された追加する歓迎します:

  • クロスENVとの互換性、環境変数、なぜなら輸出システムや設定の違い

  • &窓は、並列NPM-実行の全部または同時にNPM-スクリプトで、サポートされていません。

  • 非同期同期:util.promisify +非同期/を待ちます

  • FS-余分に交換すると、公式サイトfs.readFileSync直接ではないですか

  • path.joinを使用するためにステッチパス、Unixシステムが/で、Windowsがある\

たくさんありますが、あまりにも怠惰な書き込みをします

あなたがより良い答えやアイデアを持っている場合は、このトピックに対応するgithubの中にメッセージを残すことを歓迎:github.com/airuikun/Weを...

問題2:プロジェクトのソースファイルでは、フロントエンドindex.jsファイルを追加することができ、ブラウザのボタンをクリックし、プログラムを設計し、そして、どのように達成するために?アイデアを提供します

難易度:アリP6〜P7

この質問は、タイトルを理解するために見ることが簡単である、典型的な巨大な二面のタイトルですが、あなたは本当に列車が通過-それを書くことができます達成したいです。

大家都知道,因为安全限制,浏览器是不能直接操作你电脑里的文件系统的,但是这题却让你点击一个button,能在你的前端项目代码文件里生成一个文件,那怎么实现呢?

其实你如果看了很多的跨平台包的核心core文件,你就会发现他们实现原理都类似,都是约定好一个规范,然后实现一个bridge桥接去进行权限穿透。要写出来就太多了,大家可以自行去研究一下。

还有一个思路,涉及到npm + cli + node server去实现。首先实现一个npm插件,在bin里注册一个命令,当你在前端项目中npm run start后,调用这个命令,通过这个命令起一个node-dev-server,然后通过http请求去让这个node-dev-server去创建index.js文件。

这题其实也有很简单的方法可以去实现,有简单有难,很灵活,当然你的回答越难越有深度,就越能体现你的创造力和实力。

怎么样,小伙伴有想法和思路么?欢迎在我的github里留言。

如果你有更好的想法或疑问,欢迎在这题目对应的github下留言:github.com/airuikun/We…

第 3 题:如果一个实习生,他本地git的A分支被误删了, A分支代码没有被push到远程,如何找到之前A的提交记录和代码

难度:阿里p6 ~ p6+

这个误删分支导致代码丢失的错误,经常会出现在实习生和新招的校招生当中,如果你是一个前端团队的main coder或者项目负责人,对git必须要非常熟悉,要不然会经常出现代码误删,代码丢失等问题。这个问题你如何解决呢?

如果你有更好的答案或想法,欢迎在这题目对应的github下留言:github.com/airuikun/We…

第 4 题:如果你用nodejs实现的爬虫服务器的IP被指定网站封了,如何解封?

难度:阿里p6 ~ p7

如果你用nodejs实现爬虫去扒取网站内容,就很有可能会被别人反爬虫机制给封杀掉。当然,解决方法多种多样,我没做过大型完善的爬虫服务,但是做过小型的,遇到这种情况我实现方案是做几层ip池,当抓取失败后,通过自动随机切换ip代理池去绕过封锁,我简单写一下ip代理的实现原理的伪代码吧,其实就是用nodejs实现一个代理,很简单

 http.createServer((req, res)=>{
 request(
 `http://xxx/${req.url}`,
 { proxy: "xxx.xxx.xxx:xxx" },
 function(error, response, body) { if (!error && response.statusCode == 200) {
 res.end(body);
 } else { console.log(error);
 }
 }
 );
 }).listen(8888,()=>{ console.log('run')
 });
复制代码

如果你有更好的答案或想法,欢迎在这题目对应的github下留言:github.com/airuikun/We…

第 5 题:用nodejs,将base64转化成png文件

难度:阿里p5 ~ p6

 const fs = require('fs'); const path = 'xxx/'+ Date.now() +'.png'; const base64 = data.replace(/^data:image\/\w+;base64,/, "");//去掉图片base64码前面部分data:image/png;base64
 const dataBuffer = new Buffer(base64, 'base64'); //把base64码转成buffer对象,
 fs.writeFile(path, dataBuffer, function(err){//用fs写入文件
 if(err){ console.log(err);
 }else{ console.log('写入成功!');
 }
 })
复制代码

一般你要是做出来了将base64转化成png文件,面试官又会坏坏的让你举一反三一下,会问你:实现一下将png文件,转化成base64,来少年,实现一下

 const fs = require("fs"); const util = require("util"); const imageData = await util.promisify(fs.readFileSync(fileUrl)); // 例:xxx/xx/xx.png
 const imageBase64 = imageData.toString("base64"); const imagePrefix = "data:image/png;base64,"; console.log(imagePrefix + imageBase64);
复制代码

如果你有更好的答案或想法,欢迎在这题目对应的github下留言:github.com/airuikun/We…

第 6 题:请设计一个方案:有a、b、c三个npm插件,它们会经常更新,在前端项目npm run start启动后,要求a、b、c三个npm插件自动更新到最新版本

难度:阿里p5+ ~ p6+

实现方案很多,提供一个思路:

自行实现一个x插件,注册一个全局命令叫xxx,npm run start的时候,并行执行这个xxx命令,xxx命令会通过npm info调取a、b、c三个插件的最新信息,分别截取version,然后与本地三个插件的version进行对比,发现不同的,就去update。

如果你有更好的答案或想法,欢迎在这题目对应的github下留言:github.com/airuikun/We…

第 7 题:大文件转存问题:服务器A有一个1000G的文件, 需要通过服务端B转发到服务端C,但是服务器B内存只有1个g, 怎么去实现这个大文件转存

难度:阿里p6+ ~ p7+

这题首先要实现在内存不足的情况下进行转发文件流,

当你答出来以后,面试官肯定会问你,当不小心断网了,如何继续断点续传?

你还能想出这整个流程中存在的其他什么问题?

死亡三连问,舅问你怕不怕

mmp娃现在在哭闹,我得去冲奶粉了,代码太长我就不贴了,小伙伴自己想一下,欢迎说出你的实现思路

如果大家有好的idea,欢迎大家到我的github里补充:github.com/airuikun/We…

第 8 题:如何实现内网穿透,端口转发了解一下?

难度:阿里p5+ ~ p6+

4b25a654cf6143dc8ea223a3053467b4


おすすめ

転載: blog.51cto.com/14516511/2438241