面试过程
前段时间面试了滴滴的前端实习岗位,大厂的面试机会很难得,复习了很多前端知识。
拿到面试机会,是在地铁上投递了boss,当时hr看了我的简历就和我约了第二天的面试。电脑也没带,晚上就用手机复习了前端的一些八股。
没想到的是,一面就挂掉,而且前端上升到开发的问题几乎没问。
一开始的时候,面试官让我简单介绍,随后就是一个看代码说答案的题目。考察的是var、let、const的用法。
这个题目他跟我说了多个情况,面试完之后也没有及时总结,所以就没办法在这里展示完整题目。
接着面试官又看了看我的简历,发现我是软工的,就说要考我算法。十五分钟,手写判断二叉树是否对称。
不出意外,这个题十五分钟弄不出来。然后面试官就问了我MVVM。并且期望问到更多细节。
第四个题目,如下:
他给我的提示是正则,也允许我搜正则相关的知识。
但是当时是共享屏幕敲代码,很慌张,所以搜也没搜到个啥。然后他就给我推了一篇博客,把这道题目的正则给了我,让我写js代码。
这是我写的:
javascript
//定义一个URL字符串
var url = "https://www.example.com/path/file.html?id=1234#top";
//定义一个正则表达式用于匹配URL
var regex = /^([a-z]+:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?(\?\S*)?(#\S*)?$/i;
//输出结果
// console.log(result);
// console.log('------')
// subdomain 传进去的url
// domain didi.com是判断的条件,如果url存在则返回true,若不存在则返回false
// 那么只需要判断,subdomain中是否存在domain
function isSubdomain(subdomain, domain) {
// TODO
// 规则
var regex = /^([a-z]+:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?(\?\S*)?(#\S*)?$/i;
// url经过规则解析后的结果
var match = subdomain.match(regex)
// 拿到的数据
var result = {
"protocol": match[1] || "",
"hostname": match[2] || "",
"domain": match[3] || "",
"path": match[4] || "",
"query": match[5] || "",
"hash": match[6] || ""
}
console.log('判断的依据是', domain)
// 传进去的url片段拼接
newUrl = result.hostname + '.' + result.domain
console.log('传进去的url判断的片段是', newUrl)
// 进行判断给出结果
return newUrl.includes(domain)
}
var subdomain = 'http://fast.didi.com/foo/bar'
var domain = 'didi.com'
isSubdomain(subdomain, domain)
要求十五分钟搞定,但是最后加起来快半个小时了。后面面试官又让我好好看一下基础的东西。不出意外就是挂了。
面试感想
首先,在面试滴滴前,我看了很多前端朋友的面经,我是看到有考八股和项目的。但是我没有遇到。所以当他让我写算法的时候我很慌。但是通过这个面试也看出了大厂注重的是什么,他们会首先看重你对算法的理解,把这些基础的东西敲好,才有可能写好代码。
其次,面试期间,我从大概第二题的时候就已经共享屏幕了。就导致我很慌。而且面试期间面试官在我写代码的时候不知道为什么笑了好几次,笑出声了。就,很搞我心态。其实面试应该相信自己一点,面不上也没什么,脸皮厚一点,没必要那么紧张。
第三点就是,最后一个题目,其实有更简单的方法:Node.js中也有合适的包,可以直接用。但是当时就被一句正则给限制住了,也被分享屏幕给限制住了。下次一定还是要坚持自己,不要被别人左右思想,哪怕他是面试官。
总之,加油啦,期望秋招能有个好的结果!!!