CVTE面试总结(全网面经,已收offer)
CVTE面试总结
文章目录
- CVTE面试总结
- `CVTE一面`
- `CVTE二面`
- `CVTE面试hr面准备工作`
- 1.问工资:
- 2.给前面两轮面试打分:
- 3.家庭关系和谁最好:
- 4.未来5-10年会做什么,怎么规划:
- 5.有没有别的offer:
- 6.如果给offer可能什么原因没来:
- 7.什么原因可能会离职:
- 8.对工作的地点、时间、薪资怎么看:
- 9.你最艰难的一段时期:
- 10.问她问题:
- `CVTE网上面试题总结`
- JAVA基础
- 1.Servlet的生命周期
- 2.session和cookie的区别
- 3.对Java的集合类了解哪一些
- 4.ConcurrentHashMap的细节
- 5.string stringbuilder stringbuffer
- 6.switch中可以用string吗 为什么
- 7.equals ==区别
- 8.hashmap结构
- 9.hashmap扩容
- 10.hashmap为什么是2n扩容
- 11.hashmap负载因子为什么是0.75
- MYSQL
- 1.说一下MySQL数据库的索引
- 2.组合索引是什么, 索引失效情况
- 3.建一个索引的SQL语句
- 4.字段属性 varchar和char区别
- 5.问有几种引擎,回答有好几种,主要就两种。
- 6.数据库的三大范式
- 7. mysql的锁
- 8.mysql的数据结构,为什么是b+树,为什么不用其他数据结构来进行多路查询
- 9.mysql的辅助索引
- 线程
- 1.线程之间的通讯方式 (原理)
- 2.讲一下线程池(主要是讲的种类)
- 框架
- 数据结构
- jvm
- 设计模式
- Redis
- 算法
CVTE一面
(boss直聘投的,免了笔试。。。很神奇的操作哈哈哈哈)
1.自我介绍(尴尬,开始时,一直心跳加速,喘不过气地说话)
2.元旦狂欢
- 讲一下活动是怎样的
- 用到了什么线程池 – 自己封装的
- 发奖时,如何保证不会重复发奖 – 锁代码块
- 锁代码块会造成性能缺失,如何解决
- 积分购买商品如何保 证原子性,代码怎么写 – 没看过
- 为什么要加synchronized锁,不用可重入锁
- 世界积分用什么保存 – AotomInteger原子整形
- volatile和synchronized有什么区别
3.mysql
- 如何提高数据库的查询速度 – 索引
- 组合索引和多个单列索引比较,那个速度快 ,为什么-- 组合索引,但不知道为什么
- limit(1000000,5)会有什么事情发生 – 不知道
- exits和in性能对比 – 小表举动大表
- join in如何提高性能 – 小表驱动大表
- 如何优化一个sql语句 – 使用explain优化
- 最左前缀原则是什么 – 索引使用要按照定制索引的顺序
4.JVM
- 讲一下垃圾回收 – 首先确定什么是垃圾,解释引用计数法和GCRoot引用法,并说明为什么不用引用计数;然后算法是分代回收策略,说到这里引出堆内存分为年轻代和老年代,年轻代用标记整理算法,老年代用复制算法,解释两个算法
5.Spring + Mybatis
- AOP的应用和原理 – 日志系统,模板方法实现方法前后执行日志操作
- IOC是什么,原理 – 把new对象的操作从我自己转移给Spring,原理是先读取XML文件所有<Bean,>标签,记录全限定名,然后通过反射,把所有对象存储到Factory工厂,最后Factotry调用getBean拿对象
- 讲一下Mybatis的缓存 – mybatis默认开启一级缓存,可以手动开启二级缓存
- 有了解循环依赖吗出现循环依赖是设计上的问题
6.基础
- CurrentHashmap的分段如何实现分段 – 锁每个table,不锁整个table[]
- hashmap内部结构 – Entry[],Entry里面是链表,链表由一个个key/value的Node节点组成。push的时候先计算hash,再求模,再比较hash,再equal
- 那hashmap除了链地址法还有什么方法解决地址冲突问题 – 平方法,还有一种忘了
- hashmap的扩容 – 根据存储因子默认0.75,当内存满75%的时候,扩容2倍。
7.网络安全
- 有了解过sql注入吗 – 通过prepareStatement插入防止
- 有了解过CSRF、XSS攻击吗 – 不懂
8.Redis缓存
- Redis可以缓存哪几种类型 – map还有。。。忘了
9.设计模式
- 单例模式恶汉式和懒汉式的区别 – 一个是static,一个是加锁。加锁有两种,一种synchronized,一种复合校验
CVTE二面
1.如何实现mysql,mybatis等等的缓存同步
2.self4j日志记录量大的话怎么优化
3.代码如何重构,你对重构的理解 – 重构本质是将复杂的逻辑变成通俗的方法名好理解
4.gm指令实现
5.mybatis缓存机制 – 一二级缓存
6.mysql如何解决数据量多,查询优化问题 – 数据量大、查询优化两个角度
7.聚簇索引和非聚簇索引的区别 – 聚簇主键索引,b+树叶子节点存地址;非聚簇叶子节点存索引,然后索引又找到数据,二次查询
8.mysql的explain有什么字段来判断是否需要优化 – 是否使用到index、是否重排序
9.有没有使用aop
10.期间看了我博客,问我平时写什么博客
11.期间看了我github的金手指项目
12.说一下平时看的书
13.说一下看的书里面你印象最深刻的点(我把线程池任务执行流程,有哪些线程池,区别是什么,阻塞队列优劣的选择,如何设计一个阻塞队列,拒绝策略回答了)
CVTE面试hr面准备工作
1.问工资:
官网写多少答多少(12k-17k),如果说要价过高:我的工资要去可能过高了,但我认为薪酬不是最重要的,我相信公司会在工作中了解我的价值,从而逐步提升我的工资水平,请问公司可以提供的薪酬范围是多少呢?
2.给前面两轮面试打分:
第一轮7分、第二轮9.5分。对前面两轮打分:我觉得第一轮问道我网络安全方面的时候,我会有些问题没有接触过,是我的扣分点,不过80%的问题都能回到出来,我给7分吧。第二轮技术面我表现的挺好的,算是把自己的优点和研究的东西都表达出来,最后也得到面试官的认可,我觉得能给9.5分
3.家庭关系和谁最好:
跟我妈吧,我妈比较搞怪、开心。
4.未来5-10年会做什么,怎么规划:
未来一年我希望能从初级开发到达中级开发,初级开发需要上级指导才能完成任务,中级能够独立完成需求业务。2-3年成为高级开发/项目负责人,能够架构项目、对项目程序进行优化。当然我也开始在写博客,去表达分享我的思想,传播我的价值,同时提高一下的语言的表达能力,这也是成为一个高级开发、项目负责人应有的能力。最后,我希望能搭建一个有创意的网站,一站式的解决所有问题。
5.有没有别的offer:
省略
6.如果给offer可能什么原因没来:
电子offer发的太晚,我可能不来,如果到了四月底还没有正式的offer确认,我可能需要考虑新的机会了,我相信公司的同时,公司要给我安全感。
7.什么原因可能会离职:
当我28岁还没能成为高级开发工程师的话。可能我需要换一个环境,才能有所提高
8.对工作的地点、时间、薪资怎么看:
我喜欢在不同的工作地点,会给我新鲜的空气的灵活的大脑。我能接受995的工作节奏。我希望能拿到12k-17k
9.你最艰难的一段时期:
高三吧,那时候为了考好大学,经常一个人学习到2.3点
10.问她问题:
工作环境、技术团队的氛围、有技术分享大会吗
我以后的上级是我上次的面试官吗
CVTE网上面试题总结
JAVA基础
1.Servlet的生命周期
分为init,service,destory三个流程,当第一个请求/服务器启动时init,然后会给所有进来的请求分配一个线程,执行doGet\doPost方法,最后执行destory,被GC回收
2.session和cookie的区别
what it is:cookie存在浏览器,session存在于服务器,都是存储访问者信息
their relative:都是存储访问者信息的。但是cookie容易被截获不安全,session在服务器安全。cookie容量小,session容量大
how can do:如果我们需要经常登录一个站点时,最好用cookie来保存信息 ;如果对于需要安全性高的站点以及控制数据的能力时需要用session
3.对Java的集合类了解哪一些
List:
》Arraylist:底层数据结构是Object数组,数组的特性就是按下表访问的O(1)时间复杂度,访问速度读快,但增删数据需要移动后面的所有数据,需要O(n)的时间复杂度。另外Arraylist默认大小的10,每次扩容增加1.5倍
》LinkedList:底层数据结构是链表,由一个个Node节点构成,继承了deque双端队列。链表结构特性就是在两端增删节点速度快,但按照索引访问效率低,是O(N/2),头尾就近原则。按需分配空间,不会浪费空间。
》Vector:线程安全效率慢
Map:
》HashMap:底层结构是Entry数组,称为哈希桶,即一个数组里,每个元素指向一个单向链表,链表每个节点保存键值对。访问速度快O(1)。默认大小16,2n扩容,负载因子0.75。添加元素时,先计算key的hash值,再对length取模找到table[i],然后对链表内的key校验hash,同hash再校验equeal,先校验hash是因为hash比equal快很多,然后若key同则覆盖,不同则头插。hash冲突两种解决办法 – 链地址法、平方地址法
》TreeMap:底层结构是红黑树,自平衡排序二叉树
》HashTable:线程安全,效率慢
Set:
》HashSet、TreeSet:不重复,底层跟Map一样
CurrentXXX:
》ConcurrentHashMap:锁分段技术,锁当前segment,不会锁整个table
4.ConcurrentHashMap的细节
https://blog.csdn.net/yansong_8686/article/details/50664351
ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构, 一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素, 每个Segment守护者一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得它对应的Segment锁。
5.string stringbuilder stringbuffer
执行效率:Stringbuilder > StringBuffer > String
线程安全:String,StringBuffer
6.switch中可以用string吗 为什么
可以,jdk1.x后可以,以前只能int
7.equals ==区别
如果没有重写,其实是一样的,都是比较地址。我们也可以重写成比较值
8.hashmap结构
哈希桶,由一个Entry数组构成,数组内每个元素,是一个链表,存放键值对
9.hashmap扩容
当已使用75%的容量时会进行扩容*2,75%是扩容因子。扩容因子大,则空间利用率高,但容易发生hash地址冲突;扩容因子小,浪费空间。
10.hashmap为什么是2n扩容
当数组长度为2的n次幂的时候,不同的key算得得index相同的几率较小,那么数据在数组上分布就比较均匀,也就是说碰撞的几率小,相对的,查询的时候就不用遍历某个位置上的链表,这样查询效率也就较高了
11.hashmap负载因子为什么是0.75
其中loadFactor加载因子是表示Hsah表中元素的填满的程度.
若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.链表长度会越来越长,查找效率降低。
反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了.表中的数据将过于稀疏(很多空间还没用,就开始扩容了)
冲突的机会越大,则查找的成本越高.
因此,必须在 "冲突的机会"与"空间利用率"之间寻找一种平衡与折衷. 这种平衡与折衷本质上是数据结构中有名的"时-空"矛盾的平衡与折衷.
如果机器内存足够,并且想要提高查询速度的话可以将加载因子设置小一点;相反如果机器内存紧张,并且对查询速度没有什么要求的话可以将加载因子设置大一点。不过一般我们都不用去设置它,让它取默认值0.75就好了。
MYSQL
1.说一下MySQL数据库的索引
what:索引,index,能加快搜索速度。
分类:
– 普通索引:仅加速查询
– 唯一索引:加速查询 + 列值唯一(可以有null)
– 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
– 组合索引(联合索引):多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
– 全文索引:对文本的内容进行分词,进行搜索
– 索引合并,使用多个单列索引组合搜索
--覆盖索引,select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖
– 聚集索引:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同 (主键索引即是)
– 非聚集索引:不是聚集索引的就是叫非聚集索引
作用:
好处:
– 可以加快数据库检索速度
– 只能创建在表上,不能创建到视图上
– 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
坏处:
– 降低数据库插入修改删除的速度
– 索引需要占用物理空间,除了数据表占用数据空间之外,每一个索引还要占一定的物理空间,如果建立聚簇索引,那么需要的空间就会更大
案例:
ALTER TABLE demo ADD INDEX c2(PASSWORD); – 给’password’建立索引(alter)
ALTER TABLE demo ADD PRIMARY KEY(id);-- 建立主键/聚集索引
2.组合索引是什么, 索引失效情况
组合索引:多个列成一个索引。
索引失效:
– 对索引使用函数、计算
– 范围之后(>、<)索引失效
– 没有按顺序访问索引
– 使用or
– select *
3.建一个索引的SQL语句
alter table demo add index c1(name);
alter table demo add primary key name;
4.字段属性 varchar和char区别
1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。
2、 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
5.问有几种引擎,回答有好几种,主要就两种。
myIsam:锁表
Innodb:锁行、支持事务
6.数据库的三大范式
第一范式:属性不可分
第二范式:完全依赖主键(消除部分依赖)
第三范式:消除传递依赖
7. mysql的锁
– 共享锁(读锁)
– 排它锁(写锁)
8.mysql的数据结构,为什么是b+树,为什么不用其他数据结构来进行多路查询
红黑树:二叉树,深度较大
二叉搜索:无自平衡,容易瘸腿
B树:所有节点都会存储卫星数据,多节点后,深度较大
9.mysql的辅助索引
辅助索引就是B+树的非叶子节点
16.用abc三个列作为索引 select * where b=1 and c=1 如何运行的
17 用abc三个列作为索引,where a=1 or group by c会不会走索引
18 用abc三个列作为索引 select b where c = 1 会不会用到辅助索引,用到怎么样 不用的又怎么样
\2. 讲简历上的项目数据库设计
\3. 数据库数据类型选择(姓名,性别,电话,地址)
线程
1.线程之间的通讯方式 (原理)
①synchronized同步:通过synchronized锁实现
②wait/notify机制 :等待和唤醒
③while轮询:通过while(true){if(xxx)}不断测试if里volatile修饰的共享数据是否符合条件来通讯
④管道通讯:使用java.io.PipedInputStream 和 java.io.PipedOutputStream进行通信
http://www.cnblogs.com/hapjin/p/5492619.html
参考: https://blog.csdn.net/xubinlxb/article/details/52118630
2.讲一下线程池(主要是讲的种类)
单线程池newSingleThreadExecutor :创建只有一个线程的线程池,且线程的存活时间是无限的;当该线程正繁忙时,对于新任务会进入阻塞队列中(无界的阻塞队列)
**固定容量线程池newFixedThreadPool **:创建可容纳固定数量线程的池子,每隔线程的存活时间是无限的,当池子满了就不在添加线程了;如果池中的所有线程均在繁忙状态,对于新任务会进入阻塞队列中(无界的阻塞队列)
缓存线程池newCachedThreadPoo :动态创建和销毁线程
超时线程池NewScheduledThreadPool :根据timeout时间升序任务的线程池
10.线程池的底层实现
12.volatile关键字作用,底层如何实现的
框架
\11. 学过那些后台框架呢(我也答了学了前端框架, JQ, Vue)
\12. Spring有那些特点呢(总体的)
3.IOC是什么, 底层实现原理
IOC:控制反转,创建一个对象由原来的自己new,变成了交给容器Container控制,主动权变了
\14. 有了解循环依赖吗出现循环依赖是设计上的问题,Spring是如何处理的
Spring有两种处理方式
当你通过构造器循环依赖
1、Spring容器创建“circleA” Bean,首先去“当前创建Bean池”查找是否当前Bean正在创建,如果没发现,则继续准备其需要的构造器参数“circleB”,并将“circleA” 标识符放到“当前创建Bean池”;
2、Spring容器创建“circleB” Bean,首先去“当前创建Bean池”查找是否当前Bean正在创建,如果没发现,则继续准备其需要的构造器参数“circleC”,并将“circleB” 标识符放到“当前创建Bean池”;
3、Spring容器创建“circleC” Bean,首先去“当前创建Bean池”查找是否当前Bean正在创建,如果没发现,则继续准备其需要的构造器参数“circleA”,并将“circleC” 标识符放到“当前创建Bean池”;
4、到此为止Spring容器要去创建“circleA”Bean,发现该Bean 标识符在“当前创建Bean池”中,因为表示循环依赖,抛出BeanCurrentlyInCreationException。
当你通过setter循环依赖
1、Spring容器创建单例“circleA” Bean,首先根据无参构造器创建Bean,并暴露一个“ObjectFactory ”用于返回一个提前暴露一个创建中的Bean,并将“circleA” 标识符放到“当前创建Bean池”;然后进行setter注入“circleB”;
2、Spring容器创建单例“circleB” Bean,首先根据无参构造器创建Bean,并暴露一个“ObjectFactory”用于返回一个提前暴露一个创建中的Bean,并将“circleB” 标识符放到“当前创建Bean池”,然后进行setter注入“circleC”;
3、Spring容器创建单例“circleC” Bean,首先根据无参构造器创建Bean,并暴露一个“ObjectFactory ”用于返回一个提前暴露一个创建中的Bean,并将“circleC” 标识符放到“当前创建Bean池”,然后进行setter注入“circleA”;进行注入“circleA”时由于提前暴露了“ObjectFactory”工厂从而使用它返回提前暴露一个创建中的Bean;
4、最后在依赖注入“circleB”和“circleA”,完成setter注入.
对于“prototype”作用域Bean,Spring容器无法完成依赖注入,因为“prototype”作用域的Bean,Spring容器不进行缓存,因此无法提前暴露一个创建中的Bean
http://jinnianshilongnian.iteye.com/blog/1415278
\15. MyBatis中#{}和${}区别
16.spring的aop原理,类别 区别 常用哪一个
数据结构
\16. 堆排序算法实现, 时间复杂度
最大堆:
- 最大堆中的最大元素值出现在根结点(堆顶)
- 堆中每个父节点的元素值都大于等于其孩子结点(如果存在)
jvm
内存溢出遇到过没有
\8. jvm内存结构
\9. 各部分会发生什么异常
\10. 如何判断是否需要回收对象
\11. 什么样的对象可以当作gcroots
设计模式
单例模式(如何用内部类实现)
spring中用到的设计模式
Redis
5 redis可以存储的类型
6 redis的sortset底层实现原理
7 redis里面的定时清理key如何实现的
8 redis里面定义key的时候,加入时间戳的时候,过期如何消除key的实现
9 如果消费者往消息队列放数据由于网络原因消息队列的ack没有收到,
消费者会重新发送,如何解决。如果消息队列发送到消费者的时候ack由于某些原因没有收到
如何解决消费者重复收到数据的情况
10.如何保持``200``万条数据的实时排名前``10``名(缓存)
算法
19 两个int数 比如 5,6 求出二进制中对应位置全是1出现的个数
CVTE面试总结(全网面经,已收offer)相关推荐
- 2020下半年,最接地气的字节跳动Android面经分享(已收offer
view的绘制过程 滑动冲突 接口和抽象类的区别 内部类和静态内部类的区别 string stringbuffer stringbuilder hashmap的源码结构,arraylist,linke ...
- 面试——Java字节面经(已获Offer)
前言 要么字节跳动,要么心脏跳动,你选哪个?哈哈哈,为大家准备的字节三面面经,后面有总结面试经验,以及相关面试技巧,请自行阅读.怕你忘了找不到,推荐先收藏,再阅读. 一面 在校项目后端是怎么搭建的 答 ...
- 字节跳动(头条)2021 最新 Android 面试题及答案 (已收 offer)
[](()[2面 - 项目专项] Native.H5.RN页面混合跳转时,页面清栈的桥实现 页面混编框架的设计与难点 RN 通用容器的设计 用户行为监控方案设计 JS 错误治理方案 RN 页面对用户行 ...
- python工资一般多少大专学历-这个面试官真霸气 不收大专程序员
原标题:这个面试官真霸气 不收大专程序员 开发者报 | 面试官当面撕程序员简历:大专生我们不收! 1.面试官当面撕程序员简历:大专生我们不收! 一名程序员发帖讲述了自己最近的一次面试被面试官撕掉简历的 ...
- 联发科嵌入式面试总结-提前批(已offer)
荣耀 紫光展锐 大疆 科大讯飞 字节 大华华橙 大华华飞 乐鑫 联发科 由于之前面实习岗通过没有去,所以需要再次走一遍面试流程.这次面试体验感比较好也很流畅,注意的是需要提前几个小时下载测试一个web ...
- 测试工程师-yy面试 cvte面试总结
测试工程师-yy面试 & cvte面试总结 由于面试后,将近一个月才写这个博客,很多面试问题都忘记了,简单写有印象的几个 YY面试总结 面试的面试官给人印象不是很好,经常看手机... 1面:聊 ...
- 西安腾讯云面试总结(已拿offer)
西安腾讯云面试总结(已拿offer) 一面 (电话面试) tcp 和 udp 的区别? 事件循环? react 和 vue 的区别,数据流动? 箭头函数优点? web 性能优化? web 安全? 项目 ...
- 2022最新面试圣经,已拿offer
前言 关于面试相信大家并不陌生,面试技巧内的相关推文大家也看了不少,但大多都是关于面试成功的经历,话不多说今天我就跟大家分享一下关于我在2022年面试中遇到的问题 字节跳动(已拿offer) 笔试(两 ...
- 百度统计 java 实现思路_211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer...
背景 计算机六年入门选手,大大小小面试了不少,从小白一路成长而来,也希望能帮助到学弟学妹们.本面试经验只适用于我这种普普通通没有背景的萌新,大神勿扰 先介绍一下个人情况211本+985硕+计算机专业, ...
最新文章
- GPU高性能编程CUDA实战(二)
- 如何实践AI深度学习的十大惊艳案例
- linux终端信息读取,linux系统 如何通过终端查看信息
- oracle19c怎么创建Scott,Oracle db-sample-schema-19c安装(scott hr oe pm ix sh bi用户创建部署)...
- 成功解决AttributeError: module 'tensorflow' has no attribute 'merge_all_summaries'
- 时间同步失败_跨系统历史数据同步脚本实战
- 分布式mysql保持数据一致性_一种分布式跨数据库保持事务一致性的方法及系统与流程...
- android 同步执行方法吗,Android异步方法以同步方式实现
- mysql cmake 参数详解
- EventThread线程对VSync的接收
- td中使用overflow:hidden; 无效解决方案
- Eclipse主题设置
- [kuangbin带你飞] 专题一 简单搜索 题解(超详细注释,史上最强题解)
- TIM下载的文件在哪个手机文件夹中(安卓)
- 梶田秀司 仿人机器人学习笔记(一)书本第一章
- 回归远程 - 云原生IDE是IaC从表象触达本质的必然选择 | SmartIDE
- kaggle 电商数据分析
- 关于onselect与onchange的介绍
- 使用GPG加密通讯,设置git提交验证密钥
- 基于springboot实验室管理系统
热门文章
- Visual Paradigm创建UML的流程和一点实用技巧
- 邓俊辉《数据结构》-列表学习笔记
- python经典案例
- 极路由2(极贰)ROOT并刷了OpenWrt
- Unresolveable build extension: Plugin...or one of its dependencies could not be resolved: Failed to
- python中shelf对象_shelve -- 用来持久化任意的Python对象
- 什么是信号完整性?(大白话)
- 西门子plc S7-1200学习历程(1)
- python-树-BST_Traversal-二叉搜索树的遍历
- 数仓理论知识之什么是度量,什么是粒度,什么是事实,什么是维度