下我的准备过程吧:
- 因为特殊原因,所里没有网络,2月份开始我陆陆续续刷了200左右leetcode,被小论文打断,然后大论文开题,4月底开始看《C++ Primer》,看了一个月摘抄了几十页A4纸笔记,基本没人考这个,但通读下来可以说入门了。随后继续刷刷题,看牛客,那时候一心想去写游戏开始照着视频教程做unity的小游戏,但完全没有系统学习过unity,如果有想去游戏公司的同学可以学学。
- 6月底买了牛客的C++面经,开始背,说实话这个面经可以普及一下入门知识,问这个的还是不多的,买来背入门绝对不亏,甚至血赚。
- 随后的3个月就是无尽的刷牛客,看面经,查漏补缺,笔试面试。买了《Effective C++》《STL源码剖析》《UNP》《深入探索C++对象模型》《APUE》,都没看完,挑了些看的,来不及了。都是好书,21届的小伙伴可以早点看,对提高自己的技能水平很有帮助的。
- 还有一点看法就是C++这东西很看重底层,内存方面被问到很多,我同学面雷火问了很多汇编层面的东西,希望不要浮于表面,有时间尽量能多挖深一些。
- 我还搜集了一些关于游戏面试的问题,但准备的一个都没用上,如果有人看我之后再整理一下,也不多,只是游戏行业可能报的人不是很多。
- 很多题目我都没写我的回答,因为如果我答得不对就坏事了,如果有同学有想知道的就评论里问下啦,我看到我尽量回答,只是不保证正确
C++ 的岗位面试不太可控,随机性比较大,特别是对于非科班来说,只能高效率复习提高,然后海投。
一面(1h):
- 自我介绍,会的语言
- 面向对象三大特性,详细介绍一下
- 多态怎么实现
- 析构函数能是虚函数吗,为什么
- 手写单例模式
- 排序算法及复杂度
- 非比较的排序算法及复杂度
- 子类能使用被重写了的父类方法吗,怎么写
- 内存管理,堆栈区别
- 还有一些年代久远记不得了,只记得都是很基础的C++问题,牛客上的C++面经里基本都有
- 算法题:翻转数字,如123变成321,-123变成-321,210变成12这种,很简单
第二天也就是15号上午就打电话来约二面,晚上就二面了
- new和malloc区别,能说多深说多深
- placement new
- new失败了会怎么样
- 报异常了程序会怎么样,你怎么处理异常
- 用过no throw吗,说说
- 判断大端小端
- 一些简单的基础
- 我要问你一个安卓问题了啊(不会)一点都不会吗(只自己做过个小app玩)页面总写过吧(不会)那为啥投客户端(因为看到了C++)行吧
- 写个算法题:两个有序数组的合并,a数组足够大,能放下a和b两个数组里的数字。
一面
- 自我介绍,聊下项目,用C++啊,没事语言都是相通的
- 用过百度吧,思考一下我搜索“中国”,后台会经过哪些过程
- 然后我要你实现一个搜索的功能,把所有搜索的地方抽象成一个个文件,假如我搜索“中国”,你要返回哪些文件里的哪些行的第几位是“中国”,你怎么做。
这一题直接给我整蒙了
- 提示一下,你刚刚说了把文件存起来,可以理解为你预处理了一遍,只允许你遍历这一遍,你怎么存这些文件,文件可以有类别
- 我在扯字典树,他让我说说字典树
- 哈希,哈希冲突,解决方法,链地址法改进
- 红黑树说下,没让手撕插入删除
- 内存泄漏说下,怎么排查
- 假如现在有个接口,你输入一个值他返回一个结果,都假设是数字,如果这个结果等于一个值你就丢弃这个结果,怎么做
- 把那个值存下来比较就行了啊
- 如果不是一个值了,是只要之前出现的结果都丢弃怎么做
- 把所有结果都存下来hash然后看在不在里面啊
- 如果这个结果是0-100亿,内存只有XXG,你怎么存
- 脑子抽了一下没想出来,想的是分成小文件然后hash
- 提示一下,int是几位
- 哦bitmap
- 再假如bitmap都存不下,但是可以允许有误差,怎么做
- 布隆过滤器,我听过,没仔细了解过
- 嗯没用过可能确实接触不到,行吧做个题
- 给你个二叉树后序遍历你能反序列成一棵树吗(不行)
要把空结点也存下来,
- 那要什么条件
- 给个前、中序遍历就行
- 如果只允许你后序遍历的时候存一个东西,让你利用这个反序列化一个树,你会存什么
- 父节点
- 这个不给存,你再想个
- 深度
- 那你写代码吧,假设你已经存了每个点的深度和一个后续遍历序列
- kuakuakua写完了
- C++里面那个虚方法你说下
虎牙
一面
- 自我介绍,项目,这个除雾算法描述一下
- 啥是岭回归正则化,有啥用
- 模型是什么意思
- 哦你用啥语言,C++啊,你看哪些书,觉得C++这门语言怎么样
- 堆栈描述一下
- 为啥栈比堆快
- 内存碎片啥意思,会出现在堆、栈里吗,多大算内存碎片
- 怎么利用内存碎片,怎么减少内存碎片产生
- 你说你看过stl源码解析,那stl里的内存分配怎么弄的
- 你觉得stl这个内存分配方法怎么样,怎么改进
- 说说内存池
- 数据库会吗,啥叫乐观锁悲观锁
- 怎么实现乐观锁
- ABA问题怎么解决
- C++11新特性知道多少
- 右值引用是啥意思,有啥用
- weak_ptr干啥的
- weak_ptr怎么知道自己指向的东西还在不在
- 提示下:weak_ptr和shared_ptr有共享的东西吗
- 设计个礼物排行榜的接口,用户可以知道自己排在礼物榜多少名和礼物榜前几名是谁,怎么设计礼物榜数据结构
腾讯
一面
没找到游戏服务端研发,只能报游戏客户端研发岗了
- 自我介绍,为啥想来做游戏
- 给你一个链表,怎么判断有没有环
- 给你一个链表,怎么返回倒数第k个节点
- 你是学算法的啊(我用C++比较多)
- 哦对C++,然后问了一些简单的C++基础
- 网络会吗,说说为啥四次挥手
- 长连接短连接,哪些应用场景是长连接哪些是短连接
后面的都是unity和图形学相关?我都不会
- unity里的camera怎么用的
- 投影有几个方法
- unity怎么判定碰撞
- 图形学的某个问题
- 你有什么要问我的吗
- 怎么学习游戏相关
- 打开unity看help,官方教程和api,搞懂这些你就中阶了,然后之后再看看图形学,理论和实现,就高阶了
过两天就灰了
网易互娱
人在上海报的杭州岗,8月4日模拟笔试,很水的题,AK没几天准备正式笔试的时候收到了直通面试通知,一直等到9月2号才远程一面
一面
- 写个环形缓冲区,实现pop,push,popAll接口(我忘记size要+1了,不然判空和判满是一样的,别的逻辑没啥问题,写得也挺快,就是被逮到这一点,结果判满的时候老出错,还好是小问题)
- 自我介绍,聊聊项目
- 为啥环形缓冲区里用的malloc,不用new(char* 习惯了),说下new和malloc区别
- 进程线程
- 多线程会吗(没涉及过)
- 多态,写个例子给我看
- 类的sizeof,给了段代码,A是基类,B继承A,C继承B,A有virtual函数和虚析构函数,两个int,B有两个int和一个虚析构函数,C有一个重写函数,一个自己定义的virtual函数,两个int,问C大小。
- 虚函数表位置在哪
- 虚函数表什么时候确定的
- 多态实现原理
- 知道lib和dll的区别吗
- 哪个快,为什么,lib有几份,dll有几份
- TCP UDP
- 觉得游戏是TCP还是UDP
- 写道题吧:给你一个字符串,能在任意位置增加字符,问最少添加几个能让其变成回文串
- 有啥要问我的
二面
二面是20号在上海现场,上来面试官就说,时间紧张,遇到卡壳卡了会的我们就下一题,有什么问题都可以问我,题目没听清或者理解问题都可以问。
- 自我介绍,聊项目
- 除雾算法介绍一下,阿尔法值怎么确定的
- 有遇到什么困难吗,怎么解决的
- 怎么确定阈值的,真的是这样吗,画面如果都暗下去了你这样还对吗
- 写道题吧:给了个Person类,里面
int id, int name, string name, string data
,写两个函数char *ser(Person &p)
和Person des(char *a)
,序列化和反序列化- 讲思路吧
- 不行,你就写,写完再顺着代码跟我讲
- kuakuakua写完了
- 你用'+'当分隔符,万一这两个string里面有'+'怎么办,换分隔符永远无法解决这个问题
- 计算一下name的长度,放到id之前,用'+'分隔,记录就行
- 给你个二维数组,代表地形高度,你滑雪只能上下左右走,且只能滑严格小于地形高度的位置,问最长递减序列长度
- 用个dp存下每个点所需长度,然后dfs的时候只要比较就行
- 那你起始点怎么选,选的不好跟dfs没啥区别啊
- (思考)那就从最矮的点开始算,这样每次后面的滑到矮的点就不用计算了
- 复杂度是多少
- 给你一个坐标轴,上面很多车,方向和速度都给你了,怎么判断最先碰撞的是什么车
- 假如撞上会消失,怎么快速判断最后剩下什么车,不能每次撞完就遍历(胡答了几种,最后还是没答上来)
- 假如不能去杭州你选哪个,上海还是广州
- 期望薪资(数字)
- 为啥想做游戏,因为喜欢吗
- 有要问我的吗
双非二本本科,就一轮技术面,实习岗,3000+1500,base:上海
平安壹钱包
主要测试部门:
一面:
- 做过高并发的东西吗
- 说说线程和进程
- 为什么用到锁---因为写这个操作用影响
- tcp三次挥手,四次握手
- Linux命令,查看tcp的链接
netstat -an
- git命令,如果新进入一个项目团队,怎么用git
- jre,jdk,jvm
- 用过什么数据库,开发用过缓存没,我说了解Redis
- GC算法,一般用在哪里
第三方支付部门:
一面:
- 聊聊项目
- ArrayList,线程是否安全,是否有序?
- TreeSet和HashSet区别
- final关键字
- 抽象类和接口
- jdk1.8新特性
- IOC
- AOP,用在日志上,Linux上怎么看日志
1.查看实时日志:
tail -f nohup.out
2.分页查看所有日志:
cat nohup.out | more
4.分页查看前N行日志:
tail -n 1000 nohup.out | more
5.查看实时日志并检索关键字:
tail -f nohup.out | grep "关键字"
6.检索日志,并显示该条日志的前后N行记录:
cat nohup.out | grep -n -B10 -A10 "关键字"
7.查看日志,从第1000行开始,显示500行:
cat nohup.out | tail -n +1000| head -n 500
### 8.查看日志,显示1000行到1500行: ```shell cat nohup.out | head -n 1500| tail -n +1000
9.删除包括关键词的行:
sed -i '/关键词/d' nohup.out
一面(上午,除了技术方面,闲聊差不多一个小时多一点)比较基础,JDK相关方面以及开发中的基本API:
- 简单说说面向对象的特征以及六大原则
- 谈谈final、finally、finalize的区别
- Java中==、equals与hashCode的区别和联系
- 谈谈Java容器ArrayList、LinkedList、HashMap、HashSet的理解,以及应用场景
- 谈谈线程的基本状态,其中的wait() sleep() yield()方法的区别。
二面(下午)相对来说比较深一点:
- JVM性能调优的监控工具了解那些?
- 简单谈谈JVM内存模型,以及volatile关键字
- 垃圾收集器与内存分配策略
- 垃圾收集算法
- MySQL几种常用的存储引擎区别
- 数据库的隔离级别
最后一个算法方面的:
5亿整数的大文件,怎么排?
一面
1.自我介绍
2.集合说一说(整体的设计 接口和类关系)
3.hashmap详细说
4.阻塞队列详细说
5.jvm
gc算法
垃圾收集器对比
调优参数 怎么指定使用cms
jdk提供的监控工具 jmap jstack等
6.synchronize
原理
优化
锁消除 锁粗化 编译器是怎么检测到的 怎么做的
7.线程池参数 执行流程 拒绝策略
8.单例模式 (关注点偏了 我写了饿汉 双重检查 主要说怎么应对暴力反射和序列化 面试官想要内部类和枚举写法 会引导你)
9.mybatis-plus是个什么东西 guns又是什么东西.....
10.linux命令
基本就是项目部署 查询日志 端口那些
问了某些命令中具体某个参数什么意思 没回答上来 直说用的多记住了
二面
1.项目合作部署问题
2.跨域问题
3.nginx
4.我们部门语言是Java和python 大数据方向 有没有兴趣 能不能提前实习
美团
美团一面 (43分钟)
第一次面试很紧张,没有录音
- 自我介绍+项目。
- 线程的实现,同步,优化
- 线程同步,线程私有变量。
- 自旋锁,锁膨胀。
- mysql索引怎么实现。最左前缀。成为PK的条件
- Time-wait和Close-wait出现在什么时候?
四次挥手
- 怎么实现反射。
- java序列化,netty
美团二面 (21分钟)
- Spring Dao用哪种设计模式用得最多?
- hibernate注解和XML。
- 装饰器模式。抽象工厂模式。
- AQS的源码和ReentrantLock的源码
- Spring AOP了解过吗。
- Spring管理的bean的对象存储在哪里。类的元信息比如常量表,字面量,静态字段在方法区(Method Area里),关于对象的数据在jvm堆里。
- HashMap原理,hash冲突解决,然后又扯到红黑树。
常规问题
美团三面 (45分钟)
- 没有自我介绍,强怼项目。
- 线程池,线程池里面的线程的状态有哪些。
- 给链接手撸hash拉链。这个花了25分钟左右调到没BUG了。
- 发展规划。
- 想问的。
分布式锁:多台机器部署的应用对一个共享数据做同步,问如何解决。
默安科技
默安科技一面
- 自我介绍+项目。
- 二叉树前序遍历。
- 深入了解项目。
- 线程进程区别,线程状态。
- 做了几个题,具体有些忘记了。
- 怎么看端口占用状态。答lsof -i, netstat。
- Linux常见命令。ls,mv,cp,source,cron等等。
默安科技二面
- 链表找中间节点。快慢指针
- 讲讲快排。口述伪代码。
- TCP/UDP区别,用途,优势。
- socket编程一般顺序。
- 二叉树层次遍历,口述伪代码。
- Java基础,封装,多态。
- 默安科技主要还是C++主导,Java岗位也有。
默安科技HR
- 问了下基本情况就给了offer,五月正式offer
- 默安在我比较绝望的时候给了我很大的信心,谢谢默安科技。
腾讯(WXG微信支付)
投的是CSIG云产业群,意外的被WXG微信组捞起,感谢机缘巧合吧。
腾讯简历面(编程 + 33分35秒)
- 记事本里手写OOP实现一个签到的程序。
- 从一堆数字中O(n)找不重复的数字。
- 字符串处理,魔改KMP。
- 数学智力题,64匹马取前8,问最快要几次。11次。
- 简历面,问项目做了什么,主要的技术栈。
腾讯一面(41分38秒)
- 深入问了我项目。
- 线程池,连接池,各自优点。
- Java常见设计模式。
- 讲讲builder建造者模式。这个答的不太好。
- TCP/UDP区别,什么时候该用什么。
- UDP实现TCP。
- 设计一个APP,TCP/UDP具体运用。
- 数据库索引,数据库引擎。
- 学习方向,我说C++/Java/Python比较均衡。
- 监督学习,无监督学习。
- 科技创新立项都做了什么。
- 没给我机会问问题,大概还是我太菜了。
腾讯二面(视频面试,75分钟,主要是写代码)
- ACM复杂规则模拟。这里可以用Java责任链模式,但当时问的时候我没有答出来,看过忘记了。
- Java GC。开始背诵balabala。
- 双亲委派机制。
- 产生死锁的四个必要条件:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
- 独占锁,共享锁和更新锁。
- 还有什么想问的。问了下技术氛围和学习情况。
- XSS注入攻击了解不。答不会。
- SSH登录,我说了半天,对面说这个方法叫什么。想了一下,非对称加密。
- 实现一个人脸识别软件要多少工时?
- 说实话,这一面面的我快自闭了,有些看过就忘了。
腾讯三面(微信语音的)
- 进程调度,进程状态切换。
进程调度算法:
1.先来先服务调度算法
2.短作业(进程)优先调度算法
3.高优先权优先调度算法
4.时间片轮转法
- 怎么用Java/C++实现线程池,具体的做法。
- Spring框架,ORM框架Hibernate讲讲。
- IOC, AOP,IOC(控制反转)和DI(依赖注入)有什么不同,Java反射机制。
- 适配器模式(Adapter pattern),桥接模式(Bridge pattern),组合模式(composite pattern)
- 主要问我想做的技术方向。
- 介绍腾讯的部门和人员划分等。
- HDFS, Paxos选举协议,zookeeper和redis一点点。
- 口头offer
- 手写归并排序。
- Git版本控制。按项目怎么用答了一下,分支冲突解决。
- Python装饰器。答当时我用来写单元测试的,久远,忘记了
- 讲讲docker。答隔离机制,挂载点,线程,还扯了内核调度,估计不是想要的答案。
- docker内网IP段是什么。
- 数据库索引机制。
答B+树,hash,各个优势balabala,然后说不太对?
答聚簇索引,非聚簇索引balabala,还不太对?没懂这个题问什么。 - 数据库B+树。能答的都答的差不多了。
- 乐观锁悲观锁,CAS, ABA问题。
- 还想问的?您是做什么的,GoLang开发。
- 线程进程区别,线程状态。
1. 新建(NEW):新创建了一个线程对象。
2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。
3. 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
4. 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种:
(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
5. 死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
- Linux权限755是什么。
- select pool epoll,文件描述符FD。
- 设计一个多用户APP,你会怎么分配,安排,和腾讯的问题比较类似。
- 还有一些碎的问题。
- 这一面和负责人聊得非常开心。如果没有AT,我估计会选择涂鸦。
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 看你提到了连接池,druid连接池。
- 常见排序算法。快排,二路归并,冒泡,插入,锦标赛排序。topK问题。
- TCP三次握手,四次挥手。
- 数据库引擎对比,索引。Innodb,Myisam和Memory对比了下,B+树,hash,between操作,left join操作。
- 看你搞ACM,你给我讲个简单的数据结构,答了并查集和线段树。
- 怎么保证多线程操作的原子性。原子类,锁,volitile部分操作。
- 深入问了乐观锁,悲观锁及其实现。我提了CAS, ABA但是不问我hhh。
- Python机器学习基础。
- 怎么解决依赖问题。
- zookeeper锁,数据库隔离级别。
- docker隔离部署问题。
- taobao查询排序要考虑那些因素?这个问题贼困难了,能说的东西很多,估计是看了我简历上机器学习,答了过往消费记录,搜索记录,协同过滤,聚类。
- 有什么要补充的呢,要考虑商家那边的情况,balabala。
- 还有什么想问的。
阿里二面(45分39秒)
- 自我介绍+项目介绍。深度学习,SSH框架,C#,Java
- 项目中你相比于别人的优势在哪里,就是你用了别人没有的东西。
- 你觉得你的能力大概在什么方面。ACM能力。当时以为要我敲代码了。一边说话一边开机。
- 你是如何进行学习的?
- 画一个软件的执行流程,UML, ER。
- 有没有写过开发文档。
- Java怎么加载类,加载验证准备解析初始化使用卸载,双亲委派机制。bootstrap class loader,extend class loader具体。
- linux常用命令。iftop,netstat,htop,apt,yum,source,corn,docker等等。
- 讲讲docker。
- MVC,MVVM对比。
- Spring的IOC, AOP。
- ORM框架Hibernate讲讲。
- 设计模式了解吗?
- 还有什么想问的。
总结:这一面中规中矩,没有问很难的问题,只要确实尝试过简历上所说的内容,应该都可以答出来。
阿里三面(leader面 18分59秒 + 24分53秒)
- 提前一天预约
- 告诉我今天面试40分钟左右,包括自我介绍,技术知识,项目经验。
- 自我介绍。奖学金,ACM,深度学习,传统项目开发,负载均衡优化等。
- 你维护的CSDN和Github主要内容,刷ACM题情况。
- 你的哪块基础知识比较好一点?每块都很平均吧。。。
- TCP如何在不可靠网络传输上实现可靠传输?超时重传,滑动窗口。TCP状态。
- TCP超时时间,RTT怎么计算。
- 4G切换Wifi时候TCP怎么实现流量变化?分组丢失,快重传,快恢复等。路由器交换机排队。
- 常见的TCP优化算法。TCP拥塞算法,答了谷歌BBR和锐速的原理以及简单实现。
- 操作系统linux内核对TCP优化的办法,HTTP1.0,1.1,2.0每个版本做的更新。状态100,host字段,谷歌浏览器6个TCP连接等,支持长连接。
- HTTP中cookie和session的区别。客户端服务端,表示用户的方法,禁用cookie时候怎么办。
- 在上一条的基础上拓展答了Redis.
- session存的数据结构,对于单个用户set,多个用户hashmap。
- hashmap的原理,key-value计算,冲突解决的三个方式。和二分时间复杂度对比。rehash造成环。
- hashtable线程安全嘛,讲讲线程安全具体实现。
- conCurrentHashmap和Hashmap性能上除了分段锁还有什么别的优化。我只回答了段内扩容。
- 高并发场景下hashmap使用,CAS,ABA问题。
- 并行和并发的概念和区别。时间片,上下文切换。
- 数据库范式,NoSQL了解过吗?
- UML图,ER图,流程图。
- 数据库的索引,最左前缀,abc三个主键。
- 跨表查询常见优化思路。
- 电话中断...吐槽阿里园区的电话质量,每一面都有问题。
- 打通之后简单聊了一下,有没有别的公司offer,说有美团,腾讯offer,挑战微软。
总结:此人说话很有条理性,一听就是大佬,全程在敲面试记录,综合体验还是很不错的。
阿里四面(交叉面 天猫超市)
-
自我介绍,介绍完了又让我确认了一遍 专业,学历,电话确认。(?)
-
讲讲你的ACM经历。
-
你有考虑过考研嘛?可以在企业中学到更多吧。开始迷了一会儿,听不清对面说什么。
-
对比一下考研和工作。
-
怎么平衡工作和休闲的时间。
-
你在深度学习项目里面做了什么。看过花书,西瓜书,机器学习导论。
-
这个项目可以用到哪些方面,夜间摄像头,老照片修复等等。
-
你了解Java开发框架嘛?SSH,SSM。扩展了dubbo,durid,rocketMQ,Netty。这个问题我答的太多了,磨蹭了蛮久。
-
讲讲rocketMQ,优先级队列,Filter,Persistence,Reliablity。
-
消息的一致性怎么做。保证幂等性。
-
回溯消费。回溯消费是指Consumer已经消费成功的消息,由于业务上需求需要重新消费。
-
wait(), sleep()区别。yield方法。
-
lock和synchronized对比。
-
可重入锁,偏向锁,锁粗化。
-
volitile保证内存的可见性,禁止指令重排,cache。
-
volitile保证原子性?不可以
-
内存屏障。就是volitile底层原理
-
解释一下copyOnWrite,讲了一下Mac OS里面对文件写时复制技术。
-
叫车时候,怎么给周围车辆排序?你能拿到哪些数据,常见路线,加权堆排序或者其他机器学习方法。怀疑是滴滴的大佬?
-
堆排序比其他排序好在那里?(时间)稳定性?快排什么时候O(nlgn)退化O(n^2),堆一直O(nlgn)。后来大佬说他没有说时间,说的是排序稳定性。那么堆不是稳定的,都怪电话听不清,这锅我不背啊。
-
海量数据找TopN。锦标赛排序,败者树。大根堆,小根堆。
-
完全二叉树,满二叉树。红黑树的几个性质。
-
红黑树旋转次数。我拓展了伸展树,二三四树,B+树的具体实现相同不同点。
-
hashmap什么时候用红黑树。冲突量>8, <6的时候退化为链表。为什么要这么做。性能比较。
-
你还有什么想问的。不同部门情况。
-
offer情况,所以你会去腾讯?考虑地域问题,家人问题也可能选阿里。
-
您是哪个部门的?天猫超市。其他问题。
总结:问题都很不错,很全面也很深入。奈何本人太菜,答错了几个点。
阿里HR面
- 自我介绍开局缓解尴尬。
- ACM,学习的内容,论文情况。
- 学习方法,实践方法。
- 初高中算法竞赛和大学竞赛有什么不同。
- 你怎么自学法。
- 怎么平衡工作和学习。
- 花书,机器学习导论主要讲了哪些内容?讲的比较浅层,但是HR反问了一个点。(HR也懂技术,大雾)
- 你带领的计算机社团在大学期间的贡献。
- 社会实践方面“十佳团队”,整个活动内容,流程讲讲。
- 其他常规问题。
- 想问的,部门人员情况。
小吐槽
面试官都很友好,但是后面几面电话通话质量太差了,每一面都有听不清的情况,面其他公司没有这个问题。
一面
- 项目构成
- 作为项目组长怎么分工的
- 采用什么开发
- 讲讲volatile,可见性举个例子
- 你说你了解juc,你说说juc,举个例子
在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包
- ArrayList和LinkedList
- 说了增删改查的时间复杂度
- 面试官说ArrayList增加时间复杂度真的是O(1),,有个值保存了下标,下次增加直接插入
- 设计模式,项目中运用了吗
- 说说你的优势吧
- 说了自己喜欢看基础,面试官说那是底层,是加分项,
- 应该重运用,不能纯理论
- 最后问了面试官建议,让我多运用运用,底层是加分项,首先得基础好
- 自我介绍
- jvm内存模型,GC
- 类加载机制
- ClassLoader的分类
- JDK1.8新特性,主要问了流Stream
- hashmap
- 聊聊框架,SpringBoot,spring,springmvc三者关系
- spring AOP
- 基于spring的应用,我想让这个程序启动之后,然后再打印一个log,或者一个定时任务,这个怎么实现
- AOP 两种代理的区别,什么时候用
- mybatis的一个接口,一个xml文件,执行SQL语句是怎么实现
- synchronized和volatile
- maven的scope有几种
- MySQL优化
- Redis的数据类型
- 项目经验,登录页面怎么做的,越细越好
- 后台怎么获取到登录人的
- 我说了requestparam,好像不是很好
- 后台怎么获取到登录人的
- cookie和session
8.14 智能供应链部二面
- 项目
- 根据项目负责的一些点提新的需求让我设计
- MySQL索引B+树问题,为什么B+
主要就是项目问的多
作者:offer没来,我还能坚持
链接:https://www.nowcoder.com/discuss/295747?type=2&order=0&pos=32&page=1
来源:牛客网
一面:
- 自我介绍
- 项目
- 手撕反转链表
- Java基础你还了解哪些
- 我说了多态的两种形式
- 看过ArrayList和LinkedList源码
- AOP
- tcp三次握手
- 索引你用过吗
- 高并发知识你了解什么
- 说了synchronized、ReentrantLock、volatile
- volatile的原理知道是什么吗?
- 我说了JMM,面试官说不是
- volatile的原理知道是什么吗?
- 说了synchronized、ReentrantLock、volatile
- 线程池几种你了解过吗
- 说了几种线程池
- 继续问我线程池的区别,线程池参数的各自含义
- 什么时候才会达到最大线程数
- 说了几种线程池
- GC说一说吧
- 类加载机制
二面:感觉很重业务运用
- 自我介绍
- 抽象类和接口的区别
- 能不能用一个设计模式来说明
- 设计模式你都了解哪些
- int和Integer区别
- Session和cookies的区别
- HTTP在哪一层
- 我说了应用层
- HTTP的状态码说一说
- OOA,OOD,OOP是什么说一下
- 数据库的乐观锁和悲观锁了解吗
- 如果给数据库加行级锁,怎么操作
- 索引了解吗
- 高并发说一说吧
- 我说了synchronized、volatile、ReentrantLock
- 说说你的优点和缺点吧
- 你认为最开心和最难过的事是什么
- 你认为有什么书对你影响比较大,不限类型
- 有什么想问我的
HR面:
- 你感觉前两轮面试如何
- 你家里人对你工作的看法
- 想去什么公司
- 了解贝壳吗
- 优缺点
- 为什么不考研
- 能提前来实习是吧
- 有什么想问我的
阿里(二面挂):
菜鸟网络内推
8.22:一面:
- 全程就撕项目,提新的需求给方案
- tcp udp区别
- session和cookie区别
8.26:二面:
- 哈夫曼树原理
- 一致性哈希算法
- UDP不可靠会丢包,为什么还用它
- 后面就是开始聊人生了,具体忘记了
8.28:拒信:
多益网络(挂)
7.17一面:
-
自我介绍
-
互联网加班怎么看?
-
项目
-
给定一个正整数n, 输出1到n的所有排列
输入 3
输出
123, 132, 213, 231, 312, 321 -
用什么语言开发?
-
如果让你建议小白学习Java,你推荐看什么书?
- Java核心技术卷和视频相结合
-
Java的缺点,跟c++和c比?
- Java比c++慢
-
排序算法,哪些是稳定的
-
解决哈希冲突的方法?
-
有其他公司的offer吗?
- 没有,目前就投了多益
-
做了我们的IQ测试,感觉如何,感觉难不难,是不是提前时间完成的
Bigo(二面挂)
9.2一面:
-
自我介绍
-
分代收集算法
-
什么参数能够调整新生代的比例?
-
如何一个程序频繁的发生Full GC,有什么办法改善这个情况?
-
标记-清除和标记整理区别?
- 程序发生内存泄漏,你会怎么去查这个问题?
- 讲一下hashmap的数据结构吧
- ConcurrentHashMap
-
Java如何实现线程池
-
Java实现线程同步有哪些方式?
-
原子类你用过吗?
- 用过,AtomicInteger,底层是用的CAS实现的
- CAS怎么实现的
- CAS本质性实现原理是什么?
- 是这样的,但是不是我想问的,哈哈哈(邪恶的笑)
-
进程和线程调度算法?
- 讲讲数据库吧,数据库引擎
- select count(*) form 表 用哪个引擎快一点
- 组合索引是a,b,select 语句 where b = 1 and c = 2
- like 走索引吗
- 邪恶一笑,where a = 1 ,b = 2 OR b =3 走索引吧
- 如何查看慢查询
- 如何查看SQL语句的每一个查询计划,就是每一步消化多少毫秒
-
你自己还可以讲一下其他SQL语句优化
-
Redis基本数据类型
-
发现服务器上TIMEWAIT(我听成摊位)状态的TCP过多是什么问题?
-
说说项目吧,不用太详细,讲一个难点吧
9.12二面:
- 根据前序中序生成树
- 还有一个算法题忘了
- 线程池参数,execute(),里面那个是实现了什么接口
- 单例模式
- 设计题:在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗
滴滴(目前没有收到结果,也没有二面)
9.16:一面(1小时20分钟)
-
Java集合说一说吧set ,list,map都问了一遍
-
TreeSet和HashSet区别
-
hashmap和concurrenthashmap
-
线程池用过没,线程池的参数什么意思,每个都问了一遍
-
拒绝策略说一说
-
synchroBlockQueue 到底可以存几个
-
锁用过没
- 锁的什么方法你用过
- lock和tryLock区别
-
lock的公平锁和非公平锁的怎么实现的(源码级别),不限于概念
-
类加载机制,不是类加载几个过程
-
如果多个类加载器加载同一个类,会出现什么情况
-
tomcat的加载过程
- spring的生命周期,不是bean
-
AOP
-
ASM怎么实现cglib
-
mybatis的插件用过没,
-
项目,
背景:暂存数据,每一次把用户填写的数据暂存到数据库,暂存字段,0暂存,1正式存
-
如果实现a用户暂存数据1,b用户暂存数据2,实现a下次只能看见数据1,
给car表加一个操作人字段,每次判断
-
car表怎么设计的,
id,车牌号,xxx,xx,暂存标记
-
car表主键是什么
主键id
-
主键id有什么规则吗?
自增长
-
如果一个车牌号重复了,添加的时候怎么处理的
每次填入的时候,都会在数据库里查询一下,判断是否有
-
如果4个人同时填入车牌号为888的车,怎么处理这个问题
叭叭叭半天,给添加这个操作加锁,给判断重复车牌号方法加锁,
-
加锁为消化资源,你考虑一下在数据库进行操作吧
叭叭了隔离级别,说了mysql默认隔离级别(可重复读)
此时感觉不对了,没有get到点上了
-
隔离级别是解决什么问题的啊
并发的时候问题,叭叭脏读等问题,
-
隔离级别什么时候才出来啊?
不知道
这个点没有回答好
-
-
数据库索引,索引类别
唯一索引,聚簇索引,非聚簇索引
-
聚簇索引和非聚簇索引区别
-
二叉树和B+树的区别
- 那如果把二叉树弄成,所有数据都存在叶子节点呢
- 那如果平衡二叉树呢
- 怎么减少IO操作的
- 磁盘上所有文件都是B+树存储吗?
-
磁盘上怎么存储这些数据的
-
你了解什么文件格式
- Linux操作系统了解过吗
- Linux命令用过哪些
- Linux根目录下有哪些文件夹
-
手撕翻转树,递归+递推
-
手撕最小路径和
网易互娱(目前没有收到结果,也没有二面)
9.26 一面:27分钟
-
自我介绍
-
面向对象聊聊吧
-
构造函数能不能继承
-
Java基本类型
-
那基本类型的比较用什么进行比较的啊,是否比较
-
对象比较呢
-
对象的比较是用的什么原理比较吗
-
hashcode了解过吗
-
简单介绍一下list和set的区别吗
- 查找大量数据里是否存在某一数据
- 优化高效的办法
-
项目
-
MySQL语法,海量数据分页吧,用什么实现
-
MySQL常见的引擎,两者区别
-
查询效率来说,哪个快一点
- MySQL用的什么版本,5.5和5.7版本的一个区别
- 平常用到json吗?