记CVTE第一次面试

来源:互联网 发布:手机漫画创作软件 编辑:程序博客网 时间:2024/05/12 12:03

首先说明一下博主是一个大三的学生,专业计算机科学与技术,主学的方向是Web后台开发,主语言是Java。前几天看到CVTE有校园招聘实习生,就报名参加了,做了CVTE的笔试题,前面的选择题不难,后面的编程题稍微难一些,而且切换出去调试,做完之后,本来想着没报希望了,就没理了,后来周四晚上短信通知我说过了笔试,让我周六过去面试。
面试地点是在一个酒店里面,当时也是蛮多人的,CVTE招的岗位也很多,嵌入式开发,前端,Android/IOS等都有,排了没一会队就到我了。总结一下面试的题目吧。

1. 问题一:项目

面试官:最近有没有做过什么项目?
我:最近做过一个关于充电电车的电桩管理的项目。
面试官:个系统主要是干什么的,有什么功能?
我就跟面试官描述了一些这个系统的大致功能和流程,这里就先省略了。
面试官:假设有一天,这个电车非常好用,很多人都在使用,数据变得很大的时候,你的数据库要怎么设计?
我:尽量单表查询,建数据库索引,使用缓存。
面试官:那索引有哪几种索引?
因为我对数据库这方面比较薄弱,不过自己以前看过一些文章,只能努力回忆,
我:有主键索引、普通索引……剩下的想不太起来了。
面试官:那我如何知道一张表是不是有索引,或者说我用什么查询语句可以知道我的数据库表中是否有索引?
我:
这里比较尴尬,因为我对于数据库建立索引,优化这方面了解的并不是很多,平时用数据库只用考虑了增删查改,并没有考虑到优化问题。

2. 问题二:语言

面试官:你的主学语言是什么?
我:Java。
面试官:在Java中有哪些异常?
我:异常分可检查的异常和非检查的异常,可检查的异常有IO异常,非检查的异常有空指针异常,数组越界异常……等
面试官:那我们平时怎么防止空指针异常?
我:使用if条件判断该对象是否为空?
面试官:好的,这个是可以的,在Java8中有一种更优雅的实现方式,你有了解过吗?
我:
面试官:java8中optional实现了这个功能。
面试官:了解过Java中的集合接口吗?
我:Collection接口,List,Set,Map接口
面试官:ArrayList和LinkedList有什么区别
我:ArrayList的是用基于数组的数据结构实现的,LinkedList是基于链表实现的
面试官:这两个的add()方法有什么区别?
我:ArrayList的add方法,将对象插入到数组当中,并且将数组当前位置的索引+1,LinkedList的add方法将上一个结点的指针指向要加入的对象。
面试官:了解过序列化和反序列化吗?Java中是怎么实现的
我:通过实现Serializable接口
面试官:拿出一张纸,写了一个类A,里面有一些属性,int a=1;String b = “123”
让我写出将这个类序列化到文件的代码。
我:回忆了一下,用了FileInputStream和ObjectOutStream,写了出来。
面试官:如果我将这个对象序列化到了硬盘,现在我将这个类增加了一个属性,然后再将这个对象反序列出来,会发生什么情况?
我:会报错。
面试官:如果我删除这个属性呢?
我:也会。
面试官:如果我在这个类里面,对serialVersionUID进行了初始化呢,还会报错吗?
我:不会。
面试官:为什么?
我:

3. 问题三:网络协议

面试官:说下TCP和UDP的区别
我:TCP面向连接,UDP无连接,TCP提供可靠的连接,UDP是尽最大努力交付
面试官:说下TCP建立连接三次握手过程
我:
面试官:断开连接时的四次握手,为什么需要四次而不是三次?
我:
面试官:两个不同局域网内的主机要通讯需要使用到什么协议
我:NAT协议
面试官:如果一个局域网内的主机要向另一个局域网内的主机发送消息,传输的报文是怎么样的?
我:
面试官:HTTP协议有哪些状态码?
我:200 302 404 500
面试官:302代表什么意思
我:重定向
面试官:浏览器是怎么处理重定向的,客户端访问服务器,服务器通过response响应,重定向的url放在response的什么地方?
我:

4. 问题四:其他

面试官:除了Java,你有了解过其他技术吗?
我:学过一些JavaScript
面试官:是前端还是node.js?
我:前端
面试官:js如何过滤一些敏感字符
我:正则表达式。
面试官:原生JS发送ajax的四个步骤有哪些?
我:
面试官:了解什么是XSS漏洞吗?
我:
面试官:如何防止表单重复提交
我:表单提交后将提交按钮disable掉
提交表单后重定向到另一个页面
服务器端使用token技术

5.总结:

首先面试官第一个问的就是你有没有做过什么项目,说明项目是很重要的,出去找工作一定要有项目经验。然后面试官问的问题都是有一些规律的,从你的回答中去引申,比如一开始的项目,项目中遇到了什么,如果使用这个项目的人变得很多了,需要怎么设计表。然后再根据你的回答继续深入问你,所以,如果对某些方面一直半解,就不要胡乱说,直接说这个方面我还暂时还没有了解。我们知道面试官会一层一层地深入追问,那么我们也可以引导面试官往往我们擅长的地方去询问,回答的时候尽量答得周全一些,可以突出一些你知道别人不知道的点,这样可以给自己加分。

整个面试过程中,没有问到任何框架的问题,其实想想也可以明白,框架这个东西,会用其实很简答,你学个几天,照着文档写demo,很容易就学会了的,所以一些大的公司往往更加注重基础。除了自己所学的主要语言方面,还可以掌握一些其他的技能,也是给自己加分的项。还有计算机网络,网络层,传输层,应用层的熟悉一定要非常的熟悉,web开发肯定要对这些协议掌握的非常透彻,TCP/UDP、Http。现在语言有很多种,不单单只是Java,Python、Node.js、Ruby这些都可以用来开发Web,只不过每个语言有自己的优点和特色。

最后在当天晚上得出了结果,也在自己的意料之中,自己的回答的确也是挺差的。这次面试也让我学到了很多东西,感谢这位面试官。机会总是留给有准备的人的,Java基础也还需要再进一步巩,重点关注IO/NIO,线程,并发包,集合,Java8新特性,计算机网络相关知识。对学过的知识要进行分类整理,形成自己的知识体系,这样你的逻辑才会清晰。路还长,坑还很多,剩下的时间好好把握,努力学习,充实自己!

0 0
原创粉丝点击