格灵深瞳 23后端开发一面面经(附Go后端开发实习oc面经)
前言
9月初通过格灵深瞳内推人投递,直接免笔试,大概一周多后约了一面。春招实习期间曾面试过格灵深瞳的Go后端开发实习生岗位,面试体验很好,面试评价也很高,2轮技术面 + 最后HR面都通过了,后来因为学校疫情政策在当时没能去成北京,比较遗憾,所以格灵深瞳开启23届校招之后,第一时间进行了投递。顺便说一下,实习是2轮技术面 + HR面,秋招是3轮技术面 + HR面,每轮技术面的时间大概都是1h多点,会有多道手撕算法题(难度中等)。
PS:23届校招刷题吐水群(703643838)
23后端开发面经
一面(9月17号,1h20min左右)
算法
- 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- LeetCode 328. 奇偶链表
- 选择一个排序算法讲解一下它的实现原理(我这边选的是快速排序)
设计
- 考虑设计一个类,去存储省市区三级联动数据。
- 考虑设计String.hashCode()方法,如何去实现?需要考虑什么?可以参考String.hashCode()源码,也可以自己去重新实现。
- 设计的String.hashCode()方法算法中还有一个乘数31,为什么使用31呢?
MySQL
- MySQL 的内连接、左连接、右连接有有什么区别?
- 创建索引的设计原则有哪些?(给出了一个场景)
- 有哪些索引失效场景?
- 讲一讲前缀索引?(这里给出一个场景,由此引出)
- 为什么索引结构默认使用B+Tree,而不是B-Tree,Hash,二叉树,红黑树?
项目
- 项目中的超卖怎么解决的?
- 项目中的限制一人一单怎么实现的?
Redis
- Redis如何实现分布式锁?可重入性怎么实现?请求计数器怎么存贮的?(从项目中引出)
- Lua脚本?(从项目中引出)
计算机网络
- HTTP状态码怎么划分的?常见状态码了解多少?
- 讲一下HTTP请求报文格式?
- GET 和 POST 请求参数的区别?
- Spring Restful API怎么解析请求路径参数?
- 讲一下TCP首部格式?TCP首部格式中的确认号是什么?有什么作用?
其他
- 对大数据了解多少?
反问
- 部门的技术栈?
- 部门的业务?
Go后端开发实习面经
一面(4月27号,1h左右)
算法题:
- 手写大根堆,手写堆排序;
- 给定两个升序数组,要求在O(n)的时间复杂度,O(1)的空间复杂度下,判断其是否有共同元素。(双指针);
- 判定回文串(双指针)。
Java基础
- 自动装箱/拆箱是什么?
- int类型的数值直接赋值给short类型的数值会发生什么?
- i++和i--是否是原子操作?为什么?
- 重载和重写的区别?
- 重载有哪些特点?重写有哪些特点?
- == 和 equals 的区别?
- 两个对象有相同的hashcode值,那么两个对象分别调用equals方法是否都返回true?为什么?
- 面向对象的理解 ?
- 面向对象的三大特性具体讲讲?
- 不借助第三个变量交换两个变量的值的几种方法?
- JVM,JDK 和 JRE 的区别?
- &和&&区别?
Java集合
- 讲一讲自己平时常用的集合。
- HashMap的底层实现?
- HashMap jdk8与jdk7区别?
- HashMap jdk8为什么引入红黑树?
- 解决hash冲突的办法有哪些?
- 红黑树和AVL树的区别?
- ArrayList和LinkedList的应用场景?
反问
- 部门的技术栈?
- 部门的业务?
二面(4月29号,1h-20min左右)
算法题:
- LeetCode 146. LRU 缓存
- LeetCode 236. 二叉树的最近公共祖先
LRU
- LRU算法的缺点有哪些?
- 如何解决LRU算法的缺点?
MySQL
- MySQL有哪几种索引类型?
- 除了B树索引和B+索引之外还了解哪些索引?(Hash索引)
- Hash 索引的底层实现?
- 为什么索引结构默认使用B+Tree,而不是B-Tree,Hash,二叉树,红黑树?
- 有哪些索引失效场景?
- 介绍一下事务具有的四个特征?
- 说一下MySQL 的四种隔离级别?
- 讲一讲MVCC的实现原理?
- 什么是脏读?什么是幻读?
Redis
- Redis是什么?简述它的优点?
- Redis的数据结构有哪些?
- 为什么要用 Redis 做缓存?
- Redis的缓存不一致性问题有哪些?
- 如何解决Redis的缓存不一致性问题?
- 如何用Redis的BitMaps实现签到功能?具体设计讲一下?
JVM
- JVM内存结构划分讲一下?
JUC
- Atomic 原子类知道哪些?
- Atomic 原子类的底层实现讲一下?
- Lock 和 synchronized 有什么区别?
- 有多少种实现线程的方法?
项目
- 简单介绍一下项目的各个模块?
- 项目的框架和技术栈用了哪些?
其他
- 对于转语言有哪些看法?
- 除了redis之外还了解哪些中间件?
反问
- 部门主要用哪些语言?
- 部门的业务?
总结
腾讯会议面试,手撕代码要求共享屏幕,思路讲解 + 伪代码实现。因为自己一直有写题解的习惯,所以每次手撕代码都会用先用本地画图软件画图讲解思路,然后再写代码。手撕LRU缓存被面试官评价他面试过的所有人里面讲解的最清楚的(嘿嘿)。
另外面试官对简历中提到的CSDN博客很感兴趣,面试的很多东西都是从博客文章中引申出来的。
引流:
蚂蚁笔试 奇安信笔试 华为测评 中兴笔试 阿里 腾讯 百度 蚂蚁 支付宝 滴滴 快手 抖音 字节头条 猝死 应届生 裁员 辞职 年终奖 秋招 春招 校招生 argue 财报 凉 pua 买房 外企 需求 瓜 卷 薪资 北京 上海 深圳 杭州 一线 拼多多 面试 福利 华为 美团 蔚来 大华 同花顺 米哈游 陌陌 探探 度小满笔试 腾讯内推 23校招 面经 滴滴笔试 滴滴 比亚迪。