忐忑

从3月6号在线笔试到3月8号技术一面二面,短短3天的时间,让我尝到了求职的不易,这是我第一次正儿八经参加面试,还是专业面试,3月7号晚上接到一面邀请短信的时候,有些高兴又有些担心,还差点失了眠。我做Web有一年半了,但是早期的时候,给自己定位全栈,学的东西很杂,也不深入,尽管勉勉强强做了些项目有一些成绩,但是真正开始了解前端也只是半年前,也是这半年我开始知道自己前端的水平还停留在5,6年前传统Web前端的地步。我是知道这学期校方要求去参加实习的,所以那时候突然就觉得很慌,自己一直以来的自信和骄傲都站不住脚了。于是,那段时间,我关注了大量的技术类公众号,每天坚持读一读,了解这个世界最新的技术尤其是前端的技术革新,以至于不会闭门造车;除此之外,我开始去打磨自己前端的基本功,我去找了《JS高程(第三版)》,一共700多页,闲暇的时候就读一读,这本书让我真正见识到了JS的厉害之处,想要学好JS还真不是件易事;我的CSS基础很弱,知识零碎不系统,为此我买了《精通CSS(第三版)》,大概400页,这本书的第三版也是今年二月底才上市销售的,我已经看了一半,内容很不错,知识系统而且有大量高级CSS的用法和实例,如果想提高CSS能力或是了解CSS的工作原理,我极力推荐这本书。

在线笔试

其实,做完笔试题目后,我是有些惊讶的,因为笔试27道题(25道不定项选择题,1道算法,1道JS高级API的用法),几乎80%的内容是有关JS的,虽然现在JS很火,而且基本上中台前台业务都有JS一力承担,但是作为Web前端实习生这个岗位,我觉得这样的试题比例有些偏颇了。我没记错的话,HTML的内容没有考,CSS的也仅仅考了一两道。幸好,我是先看的《JS高程》后看的《精通CSS》,要不然要惨了。凭着我的记忆,题目的内容大概有这些:

  • JS作用域的知识,JS全局作用域、局部(函数)作用域的概念和我们熟知的C或JAVA都不太一样,设计和实现思路不同,这也是导致JS中没有块级作用域的原因
  • JS闭包,闭包是JS中特有的一个有意思的概念,它的意思是有权访问另一个函数作用域中的变量的函数,通过闭包可以解决JS中没有块级作用域的缺陷
  • JS原型和原型链的知识,JS的原型是为了面向对象而设计的,原型链则是为继承而出现的一种编程技巧。其中尤其要注意,实体、构造函数、和原型之间的关系。
  • 同源策略和跨域问题,我们知道在ajax中是默认使用同源策略,不同协议,不同域名,不同端口的服务请求不被允许,但是通过一些手段,解决跨域问题的方案是有的(如,CORS、JSONP、图像PING等)。这个地方也是我的一个短板,后期研究后会写一篇专题博客讲解Ajax跨域。
  • Array对象的常用API,在JS中Array对象的重要不用多说,通过Array可以模仿许多数据结构,而且JS中Array对象有许多实用方便的API,在编程中可以节省很多时间和精力。我记得,笔试中是考了Array.map()这个API
  • DOM事件对象event,记得当时考的是如何阻止DOM元素的默认事件(比如,点击链接会跳转到href属性对应的URL),这个是使用 preventDefault() 这个API
  • ES5中的Object.defineProperty高级API,这个记忆很深刻,因为笔试前几天我刚看过Vue的响应式双向绑定的底层原理 ,还写了写代码。笔试中的题目是这样的 :
function proxy(){//to do
}
var animal = {};
var rabbit = {name : ''
};
proxy(animal);
animal.name = 'rabbit';
console.log(rabbit.name);

题目大概就是这样的,没有任何解释,给我一段代码,让我补全proxy函数,也没告诉我最后console.log输出的rabbit.name 到底是多少?我猜想这里是让animal对象代理rabbit,因为兔子肯定属于动物嘛,用动物代理兔子,实现代理后,动物的属性变了会导致相应的兔子的属性也发生变化。那这不就是一个简单的单向数据绑定吗?animal对象加上一个访问器属性并让变化及时响应到rabbit对象上去就好了。实现这一代理,使用Object.defineProperty这个API就可以完成。

  • 有关CSS的内容出的很浅,我记忆中有一个 box-shadow 的题目,5个参数值搞清楚就没啥问题。其他的我有些忘记了,反正CSS的内容偏基础,不难。对于那些高级的CSS特性(如伪类,伪元素之类都没有考)
  • 剩下的就是一个算法题了,当时写了,但是不太对,后来下去又解决了。题目是这样的,可以自己思考一下:
// 买卖股票最大收益问题
//假设有一个数组 , 如[1,2,3,4,5,6,7],数组中的第i项(i=0,1,2...)表示第i+1天的股票价格
//你可以任意的买入和卖出股票,以获取一定差价利润,但是规定在下一次买入之前你要卖出你的股票,
//且不允许同一天买和卖 ,现在要求输入价格数组,输出最大的收益,下面几个例子//input : [1,2,3,4,5,6,7]  output: 6     (第一天买入,最后一天卖出,收益最大)
//input : [7,1,5,3,4,2,1]  output:5      (第二天买入,第三天卖出,第四天买入,第五天卖出,收益最大)

专业一面

笔试大概就是个这个情况,总体来说,题目中等难度。下面说一下我的专业一面,面试我的是一个很年轻的小伙子,感觉比我大不了多少岁,(长舒一口气~)。事实上,如我料想的一样,一面不是很难,整个过程聊的还挺愉快,问的问题不多,我回答的比较多 (为了拖时间啊,问的问题越少出现翻车的可能性就越小啊) 。还有一个我觉得比较好的技巧,就是你在思考问题的时候,不要默不作声,不要把你的面试官凉着,你顺带着把你的思考过程说给面试官听,这样即避免了让面试官等你的尴尬,又显得你的水平比较高,而且即使一个问题你不知道如何回答,也不至于一句话也不说,这样可以给面试官留下好印象,会加分不少的。还有一点,请注意礼貌,保持轻松,保持微笑,我就是全程和面试官聊着天面试完的。一面里的问题,我个人觉得专业性的问题不多,下面是我记忆中的几个问题:

  • 千年老套俗——请自我介绍一下自己。还好不虚,我在去的路上已经想好了自我介绍。“你好,我是西工大软件专业的大三学生,有着西工大人的执着,来自河南,有着河南人的朴实,我热爱前端,但是对自己的定位是全栈,平时喜欢自己瞎折腾,喜欢唱歌,偶尔也跳个舞” 。回答不算是最好的,但是我觉得做自我介绍时可以简短但是要全面,不要一味说技术也不要只顾介绍自己的身份,至于爱好一句盖过就行了。还有就是,说话的时候,大可不必过于严肃,其实对于这种比较年轻的面试官来说,你紧张,他也会跟着紧张。所以,可以说的活泼轻松些,把面试的气氛首先控制下来。
  • 问项目中遇到过那些问题?如何解决的? 这也是个套俗的问题,不过不好答。我做那个微信小程序中确实遇到过不少问题,但是能值得拿出来说的可能不多,而且时间久远,很多地方确实是想不起来了。不慌,如果你需要时间思考和回忆,那你就给面试官直说,“我这个小程序是半年前做的,全栈式开发的,给我点时间,我回忆一下”。 后来我说了3个地方,一个是微信小程序中数字签证这个地方,当时不理解原理;一个是微信小程序中SVG的引入问题,需要转为Base64编码才能加入;还有一个是说的Restful接口冗余的问题如何解决的 。后来我有说,我了解到一种新技术叫 graphQL ,是未来升级和替代Restful接口规范的新接口规范,被称为 结构化查询接口规范 。结果面试官也不知道,这个地方也很加分,其实我也不懂,只是知道,但是唬住了面试官。
  • 后来又问了一道算法题,让我现场编程,不过后来因为时间关系让我说一下思路即可。这个算法题大概是这样的:
// 一个数组,例如 [3,30,34, 5,9],将其中的项重新组合,使得拼接起来的数字最大
//比如上面那个数组 ,最大数便是 ’9534330‘
// input : 一个整数数组  output : 最大的拼接整数

这个题如何解,不再详解,提示一下,利用基数排序的高位比较法,但是像 3 30 34 这几个数,高位都是 3 ,如何比较?提示一下,需要给 3 补一个低位 ,关键就是到底补几?

专业二面

一面我只记得了这几个问题,一面后那个面试官小哥哥直接让我去扫码等待二面,心里喜忧参半。因为当时快5点了,马上今天的面试就到结尾了,这时候面试官都是想赶紧结束去吃饭的,所以形势对我很不利啊,但没办法啊,等了大概20-30分钟,人家直接来找我了,但是公众号显示的是还没到我啊(黑人问号???),虽然还没准备好,但只能硬着头皮上了(cry) 。果不其然,面试官看了我的简历后,然后问了我一个要吐血的问题,当场蒙蔽(cry),这个问题是:

  • 假设你现在访问一个京东页面,页面发起了100个http请求,请问会建立多少个TCP连接?

面试我的是一个看起来稍微年长些的前辈,我此时的内心独白是 “ 卧槽 ,姜还是老的辣呀 ,我这是上来送人头的节奏啊 " ,不过我尽量往HTTP和TCP的方面扯了一点,面试官说不对,然后就给我简单解释了一下。我这里结合面试官的解释,和我下来后的查阅,总结为以下内容:

  1. HTTP 长连接和短链接以及多路复用

    • HTTP/1.0,默认为短链接,即没进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
    • HTTP/1.1起,默认使用长连接,会在响应头加入代码: Connection:keep-alive
      但是长连接也不是一直连接,有一个timeout时间限制,是服务器可配置的
      此时,100个HTTP连接,就不一定会建立100个TCP连接
    • HTTP/2.0 ,可以实现HTTP请求的多路复用,即多个stream共享一个TCP连接,这样就大大节省了每个连接都要建立TCP连接的时间开销
  2. 考虑不同浏览器单站点并发连接数不同 ,配合长连接,也将导致不同浏览器可能对这100个HTTP请求建立的TCP连接也不尽相同
  3. 考虑同源策略下的跨域访问限制 , 因为同源策略的影响,对于不同域的Ajax请求有可能被限制访问,也会导致TCP连接数有所改变
  4. 考虑服务器的压力和期望用户量。有时候服务器为了避免高并发量的交互访问,会限制TCP连接数的上限;还有,有些服务在建立之初会有一个期望用户量,比如,如果一个系统期望用户为1000个,那么根据一些经验公式,只要系统满足支持200个并发用户就行了,此时TCP的上限将参考期望用户数的大小

以上内容仅作参考,有更好的答案可以评论区评论,一起交流一下!下面接着正文说,

  • 第二个问题是问了我项目中的事,和一面中的差不多,不再多说了
  • 第三个问题是一个现场编程题,是一个简单的数据结构和进程调度问题,题目如下:
function a(notify){setTimeout(function(){console.log('1');notify();},150);
}
function b(notify){setTimeout(function(){console.log('2');notify();},100);
}
function c(notify){setTimeout(function(){console.log('3');notify();},300);
}
let queue = [a,b,c];
let num = 2;
function execute(queue , num){//to do
}

题目中 a,b,c表示三个要执行的事务,queue是一个执行队列,num是可使用的最大窗口数(每个窗口每次只能执行一个事务),现在补全execute函数和notify函数,来正确调度这三个事务,最后的输出应该是 2,1,3 。
这个题有两个关键点,一个是队列的调度,先进先出策略;一个是事务执行完后如何通知其他待处理事务。 当时,我没有写完,时间关系面试官让我大概说了下思路,后来有一些小问题,面试官又带着我给我现场编了一手程,并给我解释,佩服!下面是我下来有尝试写完了的代码,仅供参考


function execute(queue , num){var curNum = new Object();curNum.num = num;while(queue.length!=0){                  //队列不为空就一直执行调度if(curNum != 0){                     //窗口不为空时,从队列中取一个任务(queue.shift())(function(){curNum.num++;                //此时a,b,c中curNum共享一个内存地址,这样就达到通知的效果});curNum.num--;                    //队列中取出一个执行,窗口减一}}
}
  • 之后问我还有什么问题想要问的吗?我就问了些关于CVTE前端团队的现状和未来规划,又聊了聊公司的产品方向和业务主战场等

总体来说,CVTE实习生专业面试的问题不是很难,主要是看一些基本的编程能力,逻辑思维能力以及一些项目经验。很多更专业的问题都没有问,比如HTML语义化,CSS布局,JS高级API,浏览器解析原理等这些我觉得可能要问的问题,结果都没问

终面(hr灵魂大拷问)


今天,也就是3月10号,我刚去面试完hr面,感觉表现一般,不像专业面试那样更有把握。官方给出1-3工作日的答复时间,现在静待“佳”音吧!希望可以拿到Offer ,后期结果出来了在做补充!


今天是3月14号,星期四,CVTE终面后的第四天,结果终于出来了,很荣幸被CVTE认可了。回想这4天,心里还挺忐忑的,这是我第一次面试,而且HR面个人感觉不太好(下面详细说),所以今天当看到自己通过的时候还是很开心的。下面就HR面(也被称为综合面试),来说说大概的问的内容,我的回答保密起见就不再多说了。

其实HR面的面试官很温柔,说话也很平和,而且走技术岗的HR面一般相对也轻松。但是因为我理工科,嘴笨,不太会表达,虽然面试的时候气氛还挺好的,和HR聊的也挺开心的。但是下来自我反省了一下觉得自己的回答很平常,有的地方还结结巴巴的,可能是我的态度很好加了不少分吧。

  • 问家庭背景和现在的情况,教育的经历,童年时候的事情。我感觉是性格评估吧,因为当时我说我小时候4岁前是和奶奶住的,HR顺口说了句,喔那大概就是你性格形成的关键时期吧。但其实我个人认为,我的性格是后期形成的,也为此和HR讲了讲我之后发生的一些事情来证明。这个环节或者是问题,我觉得你千万不要说谎,性格这个东西你的一言一行中就表现出来了,你可以有选择的说,不想说的事可以不说,但是一定不要说谎。
  • 问对现在职业的认识,以及5-10年后对于生活和事业上的规划。说实话,对职业的认识或是对事业的规划这个好说,我想操心的人大概都已经想过自己以后想干什么,想往哪个方面发展。但是对未来生活的规划,这个真不好答,不知道如何答,然后面试官就换了个方式问,你觉得5年后或者更多年后,你想要的生活是什么样的? 当时差点想脱口而出“房子车子票子妹子” ,理智的我犹豫了一下然后随便文雅的扯了点我也忘记说了啥?
  • 问除了CVTE还有其他的offer或者面试吗? 这个真的是一个挖好的火坑 ,我也正是因为这里才觉得自己表现的不好。因为当时我确实有,但是我害怕这会不会是试探我对CVTE的忠心,但是我这个人不太会说谎,顺口就说了“ 有 ” , 说完我就后悔了 , 然后HR来了一个灵魂大拷问“请问如果你同时获得了这两个Offer,你是选CVTE,还是另一家?” 。 当时有些慌乱 ,作为我来说,我肯定是两者都会考虑的 ,肯定那个对我更有利我选择那个啊。所以,我实话实说了? ,嗯 , 然后又慌乱的表示了一下CVTE也是很好的选择啊。当时就觉得自己凉凉了?(翻到最后,有插曲!!!有惊喜!!!)

基本上,比较印象深刻的就是这些问题,当然也问了一些其他的,有些忘记了。

小插曲

——从面试厅出来后,我觉得回答不是很好,于是走向一进门的休息区,想要好好反省一下自己的回答。
——坐在沙发上的我越想越不对劲,对自己的回答后悔不已(就是上面那个问题,你懂的)
——抬头,看到旁边有位小姐姐,为了排解我抑郁的心情,我和小姐姐聊了聊
——我 : 我觉得我要凉了啊
——小姐姐: 为什么这样说?
——我 :因为我面试的时候说了,我还有另一家的面试,这不是有些凉了吗?
——小姐姐:那怎么会凉呢?如果你没有别的面试,反而会减分的
——我 :为啥?
——小姐姐:因为没有的话,说明你能力有问题啊,HR看问题是从多个角度的,你说这个无所谓的,不影响
——我一想,好像也是,我还在奇怪为啥这位小姐姐,会这么优秀,可以去当HR了
——这是,刚刚面试我的那位面试官出来倒水,和这位小姐姐打了个招呼
——小姐姐:这个小伙说他感觉自己凉了,因为自己说了有别的面试?
——面试官:这个没关系的。 转身去倒水了
——我 ??? 一脸懵逼
——小姐姐:你是不是觉得自己已经凉了?我是面试官
??? 惊了 , 后来和小姐姐又聊了一会就走了 ,真是奇妙而傻逼(我自己)的经历?

CVTE(视源股份)前端实习生面经相关推荐

  1. 【面试】 CVTE 视源股份 C++ 软件开发 二面

    微信搜索"编程笔记本",获取更多信息 ------------- codingbook2020 ------------- 今天继续分享 CVTE 视源股份的 C++ 软件开发的二 ...

  2. 【面试】 CVTE 视源股份 C++ 软件开发 一面

    微信搜索"编程笔记本",获取更多信息 ------------- codingbook2020 ------------- 面经面经面经!今天分享的是 CVTE 视源股份的 C++ ...

  3. 视源股份(CVTE)亮相世界顶级计算机视觉盛会CVPR 2017

    本文讲的是 : 视源股份(CVTE)亮相世界顶级计算机视觉盛会CVPR 2017   ,  夏威夷当地时间7月26日,备受瞩目的世界顶级计算机视觉盛会CVPR 2017于夏威夷会议中心落下帷幕.视源股 ...

  4. 视源股份笔试之挖个坑我就跳

    今天参加了视源股份的笔试题,真就是别人挖个坑让我挑,我就乖乖的跳,话不多说,分享下我的踩坑记0.0 第一道编程题目: 对一个字符型数组中的数据进行减1操作. 比如输入100,输出99(用c的话,不可以 ...

  5. 视频会议再添猛将:视源股份推出有“情怀”的MAXHUB会议平台

    <企业网D1Net>3月28日(北京),今日,视源股份在北京国家会议中心宣布推出重量级新品牌高效的会议平台MAXHUB.MAXHUB打破了单一功能的产品逻辑,集高质量显示.触摸书写.无线传 ...

  6. 视源股份(CVTE)一面

    一面 1.自我介绍 2.做过什么项目,简单介绍 3.项目压力测试是多少 4.C和C++有什么不同 5.讲讲多态 6.继承 7.智能指针实现原理,智能指针线程安全吗 8.TCP和UDP的区别 9.TCP ...

  7. 笔试回忆-CVTE广州视源-嵌入式应用开发实习生-20180314

    概要:20道不定项选择题,2道编程大题 21题:(){}的匹配 22题:求两个数字字符串的和 char *sum(const char *num1, const char *num2); num1和n ...

  8. 【笔试】CVTE视源2019秋招补录嵌入式岗位面经

    文章目录 01 - 笔试内容 02 - 总结 返回导页:导页 01 - 笔试内容 编程题小白选择用纯C语言编程,所以什么都得自己做,除了基础库,没有引用其它库,数值转换要注意边界问题,也就是最大最少值 ...

  9. cvte前端实习生笔试

    cvte前端实习生笔试 刚考完试,印象比较深的两道错题,记录一下 new Promise((resolve)=>{console.log("1")resolve(2)}).t ...

最新文章

  1. 管理就16个字!做不到,就走人!
  2. 数据库基础操作(二)数据库表数据的增删查改
  3. Django View使用装饰器捕获数据库连接异常
  4. Redis 面试题汇总
  5. 【Flink】Flink消费kafka 突然报错 Kafka09PartitionDiscoverer.getAllPartitionsForTopics
  6. cge模型可以用matlab实现么,GEMPACK软件 解决CGE模型
  7. python bs4 基本应用
  8. JUnit for Android入门2 JUnit断言
  9. 最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几
  10. Unity3D游戏制作学习记录03——丛林战争
  11. Linux- 网络配置
  12. 在html中 常见的块级元素有哪些,常见的css块级元素有哪些
  13. ath9k网卡驱动相关
  14. 300万微信公众号迎来广告时代
  15. Java 虚拟键盘
  16. 配电自动化“三遥”具体指什么?
  17. python自动聊天机器人手机版_Python实现聊天机器人
  18. 基于业务分离的Android开发框架MVB,MVC思想的android实现
  19. php redis redis server went away,php连接redis出现Redis server went away,rediswent
  20. eCharts——饼图中的selectedMode

热门文章

  1. Vue本地项目实现其他局域网电脑在线访问
  2. 一天接收了131份前端面试简历......(面试总结)
  3. 用api提取ip的优点
  4. javapoet的认识
  5. access计算机二级大纲,计算机二级Access考试内容大纲
  6. NTL密码算法开源库-大整数ZZ类(一)
  7. 服务器响应码418,HTTP状态码是什么?与SEO相关的有哪些?
  8. Elasticsearch的路由(Routing)特性
  9. Mac安装虚拟机Parallels Desktop,以及Windows10系统详细教程
  10. 国潮迎春 百花旗放|2022东方丽人旗袍大赛暨国潮旗袍春晚华丽落幕