2016腾讯前端面试
本身并不喜欢写面经,所以这一篇也不是面经。算是新鲜火热辣的面试感受,因为自己也是不停刷面经的人,所以刷面经同学估计要出门转左走好了。
背景
2016年腾讯校招-广州-前端-二面
面试题目
- link和import的区别?
- js实现中央播报台时间播报。例如:今天是北京时间:二〇一五年三月十二日 星期三 五时三十八分
面试过程
第一道题并没有答出来,脑袋里搜寻了下关于import的问题,只记得import样式优先级好像不太一样。所以这个问题,当时都是乱答的。
其实基本上没用过import,所以先明确下用法:
- link:
<link rel="stylesheet" type="text/css" href="style.css" />
- import
<style type="text/css"> @import url(style.css); </style>
** 1.使用方法不同(XHTML vs CSS)**
link一般在html头部定义,作为html标签,同时除了引入css之外,还可以说明比如说rel="icon"
W3School对link定义如下(链接资源,主要用于链接外部的样式表):
The <link> tag defines a link between a document and an external resource.
The <link> tag is used to link to external style sheets.
import一般定义在css内部,并且一定要在其他所有规则之前(除了charset),也就是一般写在文件头部,并且专门拿来链css的。
** 2.加载顺序差别 **
link一般都是并行加载的(其实也不算,一个域名下一般有2-6个可以同时加载,但是要求服务器是逐个返回的,比如说第二个资源要等到服务器发送第一个的正确响应然后被浏览器接收到后,浏览器才发送第二个请求)
而import其实更延迟一些,它会等到页面下载完后才加载,因而可能会产生闪烁,说多不如上图(swiper.css在components.css中被import):
import-network.png
** 3.兼容性问题(这个应该已经不打紧了,ie6都已经遭遇全面封杀了==) **
由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
至于所谓样式优先级,试了下,并没有出现。也就是说link和import都是加载资源,样式如何应用上其实没有差别,都是按文档出现位置的优先级(和css加载不相关哦)
扯的有点多== 下面看第二道题。
一向面试都会很紧张,尤其是手写代码的时候,脑袋都会糊成浆,特别着急== 所以其实这种性格压力面都很难过。面试官一说完就开始写,细节什么的都没有注意到,虽然面试官很nice会一步步提示,但是心已经乱掉了。
还是说题吧。
题目乍看上去很简单,但是好像10月,翻成中文是应该是十月而非一十〇月。还有星期日而非星期〇或者星期七,又或者〇秒是允许的。日期替换的时候一来我就打算用正则,反而增加了替换的难度。
整体思路后来整理如下:
- 提取日期
- 转换成中文
- 处理特殊情况
感觉写的还是很不好,跪求更好解决办法
var DATE_ZH = ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
var DATE_UNIT = ["年", "月", "日", "星期", "时", "分", "秒"];
function timeReport(date) {
var dateArr = [date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getDay(), date.getHours(), date.getMinutes(), date.getSeconds()];
var transformedDate = dateArr.map(function(time, index){
var transformedTime = "";
var mod = 0;
var curTime = time;
do{
mod = curTime % 10;
curTime = Math.floor(curTime / 10);
//deal with sunday
if(index == 3 && time == 0){
transformedTime += " " + DATE_UNIT[index] + "日 ";
break;
}
//deal with year like 2015
if(index == 0 ){
transformedTime = DATE_ZH[mod] + transformedTime;
continue;
}
//deal with 10, 20, 30, ... 50 and 0
transformedTime = (mod == 0 && time !== 0) ? "" : DATE_ZH[mod] + transformedTime;
//deal with 30, 29, 28, ... 10
if(curTime >= 1){
transformedTime = "十" + transformedTime;
if(curTime == 1) break;
}
}while(curTime >= 1)
return transformedTime += index !== 3 ? DATE_UNIT[index] : "";
});
return transformedDate.join("");
}
面试感受
原本安排的面试从12:30一直拖到了15:00才面上,饥肠辘辘的我以为会遇到一个非常之严厉的面试官,结果面试官非常nice。面试只持续了一个钟,后半段基本上都没有面什么了,基本上就是聊聊,解了我蛮多困惑的。我觉得这些谈话的收获远大于面试。
-
作为一个新人,常常会感觉要学的太多,顾不过来。
看到感兴趣的就试一下。真正让你记住和印象深刻的都是在你在项目中遇到的问题,所以还没有遇到的问题就不要去想解决(本人是一个特别喜欢瞎想的人==) -
新人去大公司好还是小公司好
其实新人来说的话,都没有关系。虽然大公司有更好的平台,但是所有的东西都是包装好的,实践起来的时候,底层技能要求没那么大,业务和流程规范会更好;但是小公司的话,所有问题都是自己解决,所以成长起来会更快。 -
但是很多问题只有用户到达一定数量级才能遇到啊
还没有遇到的问题就不要想着解决,做好当下的事情,不要着急。平时多去一些分享会,拿拿大牛的联系方式,有问题就联系解惑。
本来还想问为什么会选择在腾讯工作的(因为面试经常被问到)一紧张又忘了==
第一次挂面试还蛮开心。这段时间准备各种面试,并没有拿到任何offer,内心气馁的很,聊着聊着也解开了一些心结。奔波于各种面试中,一直为结果沮丧,甚至对于从事前端也有些失去信心。但是其实整个准备面试和面试的过程中,自己也终于有空去弄懂很多之前想要弄懂的东西,面试的时候暴露出来的问题,技术类也好,面试表现或是性格问题都好,经过反思后,自己也比一直忙着做项目做成果的时候成长了不少。
并不是一个有天赋的人,但是愿意做一只勤奋的程序猿。