之前做了笔试,一直没消息,还以为凉了,没想到捞起来面试了,首先常规自我介绍,加稍稍问了点实习的项目,面试中途视频网络不给力,疯狂找点面试,太难了,折腾了一下,接着面试。大概面了3,40分钟,问了下面的一些问题,记录一下。
Java
说一下 Java 序列化,如何实现序列化
场景:类 A 实现了序列化接口,类 A 中有一个属性值,这个属性值的类型是 类 B,而类 B 没有实现序列化接口,那么序列化时这个属性会被序列化吗?(不会)
说一下 Java 反射及其应用场景(JDBC 的数据库的连接,Spring 框架里面的 CgLib 反射机制,动态代理设计模式)。
说一下 CgLib 反射机制,再说一下 Spring 另外一种反射策略 利用 JDK 的反射。
ThreadLocal 了解吗?它是怎么跟线程绑定的?
说一下你知道的 Java 的锁?(悲观锁,乐观锁)
CAS 会出现 ABA 问题,如何解决?(加版本号)
说一下 Java 里面的线程池
- 当提交一个新任务到线程池时,线程池的处理流程?
- 当线程池中的工作队列(workQueue)已满,但未达到 maximumPoolSize ,此时如何处理?
- 当运行的线程的数量超出 maximumPoolSize,是如何处理新来的任务的?是直接拒绝吗?
- 场景:首先线程池中有 10 个线程,由于任务增多,将线程池中的线程增加到 100 个,当处理完任务后,假设线程池中的线程需要回收到只剩 10 个,此时是回收后续增加的 90 个线程,还是说随机回收?
- 队列同步器了解吗?了解的话就讲一下的你对它的理解
- 如何判断一个对象是否可以回收?(引用计数法,可达性分析法)
- 说一下 GC Roots 主要包含哪些内容?
- 说一下垃圾回收算法
- 说一下类加载过程
数据库
说一下事务的特性
在并发环境下,事务会发生哪些问题?
说一下事务的隔离级别
说一下数据库的索引哈希索引与 B+ 树索引的区别
为什么用 B+ 树做索引?
减少IO次数,效率高
说一下哈希索引及其使用场景
说一下数据库的左连接,右连接
Group by 语句的作用
说一下 Order by,它需要建立索引吗?
计网/操作系统
- TCP 如何进行拥塞控制?(慢开始、拥塞避免、快重传、快恢复)
- 操作系统中的虚拟内存了解吗?说一下它的作用
- 页面置换算法有哪些?(最近最久未使用LRU,先进先出FIFO, 最佳OPT,最近未使用NRU等)
- LRU 使用Java 中哪种数据结构来实现?(LinkedHashMap)
- 当建立 TCP 连接时,一个机器的端口和另一个机器的端口可以建立多条连接吗? 不可以
- 以 JDBC 来举例,JDBC 是基于 TCP 的,应用程序相当于数据库的客户端,它有个数据库连接池,连接池中有多个 jdbc 的连接,数据库那边暴露一个端口让客户端来连接这个端口,那此时应用程序这边的连接是从相同的端口出去还是从不同的端口出去的?
一、一面 1小时40几分钟,基本会的被问完了
1.介绍项目,考虑没考虑过服务器挂了怎么办
这里应该是考查系统架构
2.面向对象特性
封装,继承,多态
3.怎么理解多态
4.接口和抽象类的区别
5.说说并发是怎么回事,有什么问题,单核能并发吗?
并发是程序交替有序执行,宏观上并行,单核可以并发
6.JMM
7.说说volatile
8.说说synchronized,发生异常会释放锁吗
9.Lock
10.JVM内存结构,详细说栈、方法区和堆
11.String A = new String("abc") 创建了几个对象
两个,一个常量区
12.public class A{String name = "";},public class B{A a = new A(); String add = "";},如果我现在B b = new B(); 问JVM内存的变化
13.类加载的过程
14.Java8的.class文件用Java7的虚拟机可以加载吗
15.说说GC,可达性分析法,什么可以作为GC ROOTS
16.说说CMS,CMS有几个阶段,哪些阶段需要stop the world
17.随便说一种单例模式
18.说说AOP、IOC
19.说说索引分类,索引实现
20.说说MVCC
21.事务问题和隔离级别
22.幻读是什么
23.CPU负载过高怎么排查问题
24.知道MQ,RPC吗
25.说说网络分层
OSI七层
26.说说TCP和UDP
27.哪一层有差错校验,有什么方法
28.HTTP常见状态码
29.说说B+树的结构
30.聚簇索引,非聚簇索引,什么是回表查询
31.建索引要注意什么问题
32.链表和数组
33.单链表反转思路
34.重定向和转发的区别
35.具体的一次HTTP请求的过程,越详细越好
二、二面 三四十分钟,后面提问再讨论了20分钟
1.进程和线程的区别
2.进程的通信方式,管道里面的fd[]是啥
3.面向对象特性,多态
4.TIME_WAIT和CLOSE_WAIT(忘了怎么问的了)
四次挥手过程中
5.TCP和UDP区别
6.TCP三次握手,传输控制怎么实现
7.HTTP和IP协议
8.cookies是什么,怎么用
cookies在存放在客户端,
9.堆的特点,堆排序时间复杂度,堆排序过程
堆的基础知识,O(nlogn), 原地heapfiy建堆过程。
10.怎么确定给谁加索引,加不加索引
11.做题:有序有重复的整数数组,得到去重后数组,返回无重复数字数量(要求尽量不用额外空间)
双指针算法
12.状态码
HTTP 状态码
13.项目规模,几个人,推送怎么做的,是一个人做的吗
14.怎么学习新的技术15.
目前有offer吗,是哪里的(可以不说)
16.能实习吗
17.斐波那契数列知道吗?怎么做?
18.动态规划知道吗
美团(9.7) (50min)
数组和链表的区别;它们的使用场景有哪些;数组和链表有什么优缺点?
队列和栈有什么区别?
这两道数据结构的题目比较简单
new和malloc,delete和free之间有什么区别?
这道题目比较简单
派生类虚构的时候会调用基类的虚构函数吗,什么情况下会调用?
会调用。
重载和重写的区别?
重载是函数名字相同,参数不同,重写是虚函数重写方法。
线程通信有哪些方式?
互斥锁,条件遍历,信号量
为什么要用线程池,线程池有哪些好处?
不用动态创建线程,提高效率
手撕代码:两道剑指offer原题
数字在排序数字中出现的次数。
链表中倒数第k个节点。 快慢指针,简单题目
华融饭店6楼,楼下是中兴
两轮技术面+hr面+大佬面。两轮技术面一共手撕了三个代码
我是投的C/C++的,面试中也是问了各种C++、STL、网络、数据结构那些基础知识。
每一面的面试官都劝我学java,意思是C++想要有搞头,离不开大量的死扣源码,很折磨人。貌似如果能去就是转java后台了?
三个手撕代码分别是:
①打印二叉树所有路径
②实现shared_ptr
③实现vector的push_back
三道题目都比较难
最后一面部门大佬还和我握了两次手?,但是boss面我一共就面了25分钟,说前面技术都面过了,我就不问你技术了,出了一道矩阵乘法优化的场景题。
我虽然答出了①贪心②动态规划,但是具体的实现方法没有说明白。boss说就这样吧,你回去再好好想想,抓紧学java。然后就是反问阶段了。
最后说你能坚持到这里,真的很不容易了(非科班两年制硕士),听到这句话,有点心酸,好像凉了?
不知道还有没有希望,求个offer call
网易互娱初级游戏开发(1h2min)
一般游戏开发中C/C++问的比较深入
编译器给类缺省的成员函数有哪些?
拷贝构造,赋值
虚函数的原理?
虚函数表,声名虚函数的类有一个人虚函数表
给你一个容器,怎样去实现它的底层内存管理?
C++ 底层分配器,内存池
智能指针有哪些?为什么要用?内存泄露情况怎么解决?
采用引用计数机制,自动回收指针
Stdcall void func()有什么作用?
windows下的WINAPI void func()?原理是什么?
在构造函数、析构函数中调用虚函数为什么有时可以有时不行?为什么会造成内存问题?
A是基类,B是子类,B在构造函数中调用A的虚函数会怎样?
类管理内存的方式?除了构造函数和析构函数外还有吗?
内存对齐?为什么要内存对齐?
快速读取数据
程序是怎样在内存中存储的?
乐观锁和悲观锁?同样是锁,为什么要加乐观锁?不加会有什么影响?
悲观锁是每次操作,都假定一定会发生冲突,乐观锁是只有改变数据时,才假设会发生冲突。
Malloc的底层原理?为什么不直接用brk()调用?怎样去分配内存?
TCP的nodelay,keepalive是干什么的?底层原理?
TCP keepalive 问的很深
客户端和服务器采用多路复用,一连发送两个IPC包(没听明白),客户端收到1.5个IPC包??什么原因?怎样解决?在这中间过程,包在哪里传输的?
阻塞和非阻塞之间的区别?什么叫阻塞?
阻塞是会在那里等待,非阻塞不会等待
两个不同的终端设备,同时登陆一个账号,另一个将会下线?怎样避免?
怎样理解可重入函数?和不可重入有什么区别?机制是什么?为什么多线程要用可重入,怎样保证的线程安全?
哈希表清楚吗?解决冲突的方式?线性探查法如果新插入的冲突元素前面的元素被删除,怎么寻找?线性探查法和拉链法的区别?除了时间上还有别的吗?(注意不是链表和数组的区别?)
Select,poll,epoll的区别?Epoll和poll都有哪些具体的区别?除了这些区别它们一样吗?有Epoll了还要其他两个函数干什么?
Select跨平台,epoll只有linux有,Epoll是通知,poll是轮询
了解图形相关知识吗?
UDP/TCP的区别?
客户端服务器已经断开连接,客户端再次收到RST包,为什么?怎样处理?
Linux用过吗?
排序中稳定的意义是什么?为什么要强调相同元素的位置不能交换?
给予两个有序数组,怎样求第n大的数?(不能用辅助空间,最优方案?)
双指针,逐一比较。
给予一个无序数组,怎样求第n大的数?(不能用set,map和排序等等)
快排的partation操作,使有n-1个数在i的左边。