2020web后台开发实习生(还愿)
CVTE2020长期实习生计划面经
学校:双非本科渣渣
岗位:Web后台开发
笔试时间:5.30 技术面时间:7.6 HR面时间:7.11
笔试部分:(90分钟)
1.java的考察,java基础知识需要很熟悉,反射等。
2.考察数据库相关语句,需至少熟悉一门数据库。
3.考察算法能力,感觉CVTE的算法还是很简单的,基本没考什么复杂算法,都是最基础的,写代码时注重代码的时间复杂度和空间复杂度。(我的笔试题考了三道编程题)
这里具体的题目记得不是很清楚了,就不给出来了,下面只给出记住的算法题。
算法题
1.最简单的约瑟夫环问题。(直接模拟即可)
2.最长公共子序列,这个直接使用动态规划就可以了。
3.在一个数组中,只有一个数出现了一次,其余的数都出现了两次,请找出这一个数。
(这个题目可以暴力解,或者使用Hash来求解,但是不推荐使用)
题解:
这个题目当时我才用的是进行异或运算,可以使时间复杂度为O(n) 空间复杂度为O(1)
总结:CVTE笔试注重java基础和数据库基础,总体难度不大,算法考察不深。(可能是实习生简单一些)
技术面部分:(90分钟)只有一次技术面
1.介绍一下项目,询问项目中的一些难点,如何解决的。这个说到了跨域访问问题。
2.请写出项目中建立的表,并在这些表中随机抽一些关系来考察sql语句的编写能力。
3.项目中mysql使用的是什么存储引擎,请说出你知道的存储引擎有哪些,他们的区别是什么。
4.如何进行SQL调优。说到了可以使用explain优化。
5.当项目中遇到一些页面加载不出来,如何快速定位错误所在。
6.介绍一下Spring以及IOC和AOP,AOP的实现,这里说到了动态***,接着问两种动态***的实现和区别。
7.在项目中是否使用了AOP,在哪里使用的,这里说了主要是日志,和登陆控制。
8.说一下SpringMVC的执行流程。
9.说一下TCP的三次握手,以及为什么要进行三次而不是两次。
10.请介绍一下Mybatis的两级缓存。
11.请说出Mybatis的${}和#{}的区别,这里说到了一个是读取变量一个是字符串拼接,同时说到了SQL注入,并让解释什么是SQL注入。这里说到通过prepareStatement插入防止。
12.说一下你了解的设计模式,这里主要问了单例模式和工厂模式。
13.说一下HashMap这里提到了线程安全问题,说会产生环,这里让我举一个简单的会成环的例子。
同时问了如何解决线程安全,这里说到了可以使用同步代码块,也可以使用HashTable但是效率低,推荐使用 CurrentHashMap,这里让我介绍了CurrentHashMap的底层实现原理。
14.如果想让一个类不能修父类的方法,如何操作。
15.如果SQL查询太慢如何处理,我说到可以建立索引,继续问有没有其他的方法,这里说到了可以使用limit控制 查询数量。建立索引有时会失效,这里继续让说什么时候索引会失效。
16.说一下你了解的Https的实现原理。
17.有了解过CSRF、XSS攻击吗(这个没有了解过)
18.询问Redis的基本数据类型,和在项目中如何使用的,为什么要使用。问是否了解过Redis源码(这个没有看过)
19.在项目中使用的日志框架是什么。你认为日志记录的作用是什么。
20.项目中比较喜欢用的集合框架,为什么要用这些。
21.手撕代码:
给出一个无序数组,找出数组中前四大的数(按从大到小的顺序输出),如果不足四个,找出最大的数。
EG: [1,3,5,7,8,9]. ——> [9,8,7,5]
[4,4,4,4] ——> [4,4,4,4]
[1,2,3] ——> [3]
解题思路:
最开始想到的是使用快速排序,但是复杂度为nlog(n),复杂度很高,后面想可以用直接扫描四次也可以复杂度为O(n),感觉不能这么简单的算法,复杂度还可以降低,于是想到了采用快速排序思想,但是只进行四次快速排序,所以时间复杂度为log(n)的复杂度。
22.请说一下你对Spring Cloud的理解。(说的比较浅,毕竟没看多少)
23.你现在在学一些什么新的技术,这里说在学SpringCloud和Spring Security
24.说一下你哪里最擅长但是我没有考察到的,这里我说到了算法,数据结构,java基础和JVM等。
25.说一下接下来一段时间的学习计划。
26.有没有什么问题想问的,这里问了面试官我还应该学习哪些方面的知识,面试官说可以多看一些开源框架的源码,可以去学习一下Spring cloud和MQ
总结:
只有一次技术面,面试的时间比较长,但是面试官很和蔼,没有任何压力,面试官偏向与考察某一个方向,并不都会涉及到,但是每个人面试的不同,所以还是要知识面广阔一些,这个很重要,基础要非常扎实,我觉得这次面试中算法题也是一个加分项。
注意:
无论笔试还是面试都不可以使用本地IDE,在线编程,没有代码提示,导包也需要自己,如果不记得包请不要使用,可以自己实现相应功能。同时在面试中算法题,在改bug过程中面试官会全程看着你怎么调试bug,怎么分析,一定要快速定位错误原因,并在规定时间内解决,必须可以运行处正确答案这个题目才有分。、
技术面通过后,会让补全简历信息。都是一些常规问题。
HR面(20分钟)
1.父母是做什么工作的,他们的性格如何,怎么体现的。
2.对上次的技术面试满分10分,你会给自己打几分,为什么。
3.小时候让你印象最深刻的事情。
4.可以接受的每周上班时间。和每天工作时间。
5.你是如何看待加班这件事的。
6.如果家庭和工作遇到了冲突你会如何处理。
7.CVTE是什么吸引了你。
8.如果这一次面试没有通过,你认为最可能的原因是什么。
9.如果给你发offer,你在什么情况下会拒绝Offer。
10.父母的身体现在如何,对你的工作城市有什么要求吗。
11.你期望的实习薪资和转正薪资是多少。
12.未来五年的发展计划。
13.用一个词来分别修饰的你父母,你和谁关系最好。
14.是否有女朋友。
15.是否拿到其他公司的Offer。
16.以后意向的工作城市。
让回去等待三个工作日给答复。
7.16日上午官网查询状态显示通过,下午HR小姐姐电话联系入职时间,最终实习薪资给的8k。
总结