1.spring aop,ioc
AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己实现怎么实现一个IOC容器?这些东西都是经常会被问到的。
2.threadlocal的底层实现
3.hashmap的底层实现
hashmap的底层实现是通过一个数组来存放数据,数据存放的位置由特定的规则计算出来,同一个位置可能存放多个元素,用链表串起来,在JDK1.8之后,当链表长度超过8的时候,链表会变为红黑树。
4.线程池的参数
5.类的卸载
6.求一颗树的节点数
7.求一个数组里面,两个数的最大差值
8.转帐时如何保证操作的完整性(不用事务来实现)
9.类的加载器
10.计算机网络
11.https
12.排序的时间空间复杂度
4. Https 和 http 的区别?
5. https 验证证书的过程讲一下。
客户端发送支持的非对称加密算法,以及SSL版本给服务器,服务器挑选一种,并返回CA证书,
6. 插曲:七牛云的手撕代码要共享屏幕还得翻个 qiang 下个插件。
一道手撕算法题。" abc blue skylight " --> "skylight blue abc" 空间复杂度为 O(1)
一面(13min)
-
介绍比较熟悉的项目
-
上线了吗
-
什么是线程安全?
-
不安全是什么样的情况?
-
Java 中有哪些方式可以实现线程安全?
-
Synchronized 和 Lock 有什么区别?
-
怎么理解可重入?
-
集群环境下怎么实现线程安全?怎么同步实现?
-
接触过 Redis 吗?
-
介绍一下 Java 中的 String
-
String 为什么要设置为不可变的?
-
项目中什么情况下用到多线程?
-
线程池有什么优势?
-
有接触过消息队列吗?你觉得消息队列可以解决什么问题?
-
自己平常对哪方面技术比较感兴趣?
-
研究方向是什么?
一面
Netty Socket 通信解码器用的什么?
TCP 三次握手四次挥手讲一下
REASTful API 的规范
Java 8种基本数据类型 int 几个字节
Java 并发集合有哪些?
常见的几种线程池
JVM 内存模型简介,常用的 JVM 参数 线程数调整
Redis 常用的命令
Docker 常用命令,网络模型
Linux 常用命令
二面
线程的几种状态,waiting 和 blocked 的转换?
就绪,阻塞,运行
JVM 参数调整 -Xmx 调大,线程数怎么变化
ConcurrentHashMap 在不扩容时 put 和 get 操作过程,在扩容中 get 和 put 怎么操作
BIO、NIO、AIO 各自的含义,特点,差异体现在哪里
JVM 类加载机制,说个自定义类加载器的具体使用场景
String a = new String("hello"); 说说栈、堆、常量池的存储情况
50分钟左右
- 自我介绍
- 安卓项目
- Activity和Fragment,生命周期
- SharedPreference底层实现,不会
- 数据库,B+树底层实现
- service
- 手写单例,解释
- 线程并发问题,以虚拟机的角度解释???
- 如何等待多个线程都执行完了再往下执行
- 锁的优化和升级,这块忘了,直接傻了
- 动态代理,作用和场景
- TCP四次挥手,TIME_WAIT状态的作用,除了确认ACK是否被接收方接收到还有什么作用吗???
- HTTPs过程
- 虚拟内存?瞎扯。。。
- 内核态和用户态,分块??8会
- 手撕最大堆,实现对应的push和pop操作
- 提问
一、地平线(嵌入式软件研发工程师-南京,提前批免笔试):
一面(电话面试):
(1)class和struct的区别
(2)list和vector哪个索引更快
(3)线程同步的方法、线程通信(共享内存、信号量、互斥锁、事件对象)
(4)多线程访问同一全局变量会出现的问题(锁机制???),有没有遇到过相关的问题。
(5)问会不会网络编程
(6)手撕代码:两道题,一道是数组中最小的两个数,一道是大数相加,我选的第一道
二面(电话面试):
(1)定义和声明的区别
(2)static extern
(3)数组指针、指针数组、函数指针、函数指针数组
(4)堆和栈的区别
(5)深拷贝和浅拷贝的区别
(6)内存泄漏与内存溢出,如何防止内存泄漏
(7)进程和线程的区别
(8)手撕代码,一面出的两道题,做剩下的那道大数相加
三面(电话面试):
挺过了一面二面技术,以为三面应该还可以,结果gg。本来约的4点,结果面试官开会开到5点,等到5点多开始面试。上来先问我有没有做题,我说做了,然后就开始聊项目,估计也是心情烦躁吧,面试很没有耐心,全程怼项目、被鄙视,说我做的太low,没意思,草草结束。然后官网状态就显示挂了。
总结:地平线提前批的处理速度还挺快的,三面基本上是连着的,前两面都还好,面试官也不错,就第三面,可能也是我自己项目不行吧,挺受伤的。
可以看出C++的初级要比Java的初级知识点少,难点在C++11以及底层的东西。C++项目也不好做。
作者:O(∩_∩)O123
链接:https://www.nowcoder.com/discuss/292986?type=2&order=0&pos=81&page=0
来源:牛客网
二、招银网络(C++开发工程师-杭州):
电话面试(笔试做的不好的话,会有这么一轮,跟我聊了不到10分钟吧,而且真的会刷人的哦):
(1)什么时候用到内联函数
(2)内存泄漏怎么办
(3)debug和release文件哪个大
(4)如何构造一个服务器
现场面试:
一轮,一个技术小哥哥,问的挺细挺多的,感觉还比较专业:
(1)设计模式必问
(2)SQL查询语句
(3)手撕代码:给定一个数组,按奇偶奇偶输出
(4)TCP/IP协议,握手挥手机制
还有一些记不清了,还挺细的
二轮,比较严肃,感觉是boss: (1)项目
(2)别给自己挖坑!!!问你会什么编程语言,我说C++,问我C++优势在哪,然后让我写个类;
(3)用C++做过什么项目,我说没有,但是写过一些程序,然后就让我写一个最复杂的,自己比较菜,随便写了两个?
三轮HR:
HR问的问题挺多的,各种经历、家庭都问,这个好像挺看重成绩的,实验室小伙伴成绩不是很好,全程被怼
现在等结果,希望能上岸,好歹在杭州啊~?
四、YY(C++开发工程师):
一面凉:
(1)定义A,B两个类,及虚函数test(),B b, A* b,那么b.test()和b->test()有什么区别,从内存角度来说。
(2)构造函数能是虚函数吗?析构函数呢?虚表怎么调用
(3)I/O复用(select,poll,epoll实现),网络复用()
五、汇顶(嵌入式开发工程师,提前批):
当时没复习,啥都不会,记不清问了啥?
(1)大端和小端的区别,如何判断
(2)单片机虚拟地怎么处理
还有一些记不清了,是有一个手撕的
自动转秋招:
总体来说,秋招很简单,和面试官聊了聊项目和成绩,然后HR,然后boss面,问了放大器的内部结构,没有复习过,不会,最后给了一个sensor应用工程师的offer,同时也想问下有没有这个岗位的小伙伴,不知道咋样呢
六、小米一面凉(秋招投的嵌入式开发,结果提前批直接转秋招,面的大数据开发工程师):
(1)深拷贝和浅拷贝的区别(高频题)
(2)说一说项目中如何应用贝叶斯分类的
(3)几种排序算法的时间、空间复杂度,说一说归并排序如何实现的
(4)大数据相关的我不会,面试官也就没问了,然后凉凉
七、度小满二面凉(C++开发工程师):
(1)内存管理
(2)TCP和UDP的区别
(3)产生死锁的原因,写一段代码实现
(4)为什么会有线程不安全,写个示例代码
(5)数据库事务的特点、事务级别
(6)InnoDB和MyISAM的区别
(7)SQL的锁机制有多少种,乐观锁、悲观锁
(8)前缀表达式,中缀表达式,后缀表达式
(9)内存泄漏
(10)进程间的通信机制
(11)写一个快速排序
八、字节跳动一面凉(C++开发工程师):
(1)字典的底层实现机制,为什么要用红黑树,红黑树的原理
(2)C++虚函数
(3)堆栈的区别
(4)优先级队列的实现,高优先级先出
(5)手撕代码
九、ZOOM(C++客户端开发工程师):
(1)类在定义的时候默认会生成哪几个函数
(2)C++相对于C的优势在哪里
(3)虚函数、多态的实现
(4)C++内存分配
(5)TCP/IP,TCP三次握手,四次挥手
(6)指针,引用,实参,形参
(7)delete[]和delete问题
(8)进程间通信的方式
(9)进程,线程,程序的区别
(10)指针,引用,实参,形参
(11)一个string翻转,不能额外占用任何空间
十、寒武纪(音视频驱动开发工程师):
(1)CNN原理等深度学习问题
(2)linux开发,Python用的比较多,C++的问题没怎么问,凉凉
十一、图森未来(系统开发工程师):
(1)写一个类,实现insert,delete,getClosest等功能,信息不是很明确,花的时间有点久
(2)剩下一些基础C++问题
十二、优必选(C++开发工程师):
技术一面:
(1)基础问题,插入,查找算法的复杂度
(2)场景问题:实时通信,TCP/UDP选择等
(3)linux会不会,有没有开发平台的倾向
(4)项目相关
HR面:
(1)各种灵魂拷问,很可怕,涉及职业规划
(2)给自己最想去的公司排序,top3;如果加上优必选,都收到offer,如何选择
还有海康、电信云、海尔、平安产险等,问项目比较多
问了差不多20分钟,面试官说我们做个题吧,于是从档案袋里面抽出一张纸来,上面的题目是:
给一个区间a,b,再给一个所有元素在区间范围内数组,求在区间范围内,数组中未出现的数。比如区间为0,99。数组为0,1,3,44,78。那么输出2,4—>43,45—>77。写了几分钟,面试官说主体正确,但边界条件没有考虑全面,又修改什么的。可能刚开始对题目理解有点偏差,最后题目一共和面试官讨论了20分钟。
先对数组进行排序,这道题不算难。
一上来就撕题,题目是有一组硬币,面额为1,3,5。给一个数amount,求最少需要几个硬币能够凑齐amount。
dp[n] = dp[n-1]+dp[n-3] + dp[n-5]
几分钟写了一个递归
面试官:想想有没有其他效率高一点办法
想了一下,用了贪婪算法
面试官:效率是有一定优化。其实这个天可以用剪枝,
然后和面试官探讨了一下。
面试官:会动态规划吗
我:用的不太熟悉。
其实是怕动态规划写不出来。当时面试都饿死了,脑子不灵光那种。
面试官:你说说你学了哪些计算机的东西
我:c++,linux,操作系统原理,数据库,数据结构。计算机网络。balabala。
面试官:你项目怎么用c++实现的。
讲了项目构建哪些基类,派生类,怎么组织。最后说自己因为项目原因,在学校用Linux搭了一个服务器,程序放在服务器上跑。
面试官:服务器那一块我不太熟悉,你了解操作系统吗?
我:我那讲讲进程,线程吧
面试官:可以
我从进程的虚拟内存开始,讲了物理主存,cpu,tlb,页表,置换算法。讲的正起兴。还没讲到线程,面试官就打断我了。
面试官:好了,可以了。看了来你对计算机原理比较清晰。
最后面试官又反过来给我讲什么是动态规划,刚才那题怎么实现balabala。
全程开启小学生模式。
面试官人非常nice,没有给我感觉任何压力,就像朋友一样。
最后面试官对我总结为:计算机基础可以,算法部分一般,还需加强。
二面完了等了10分钟。主管面。
到了主管面都下午6点了,后面还有人,所以只面了20多分钟。
三面的面试官人也很和蔼。交了成绩单和简历。看了一下成绩单,让我好好收好。
面试官:学过哪些内容,看过哪些书?
我重复了一遍二面的回答。讲了一下自己看过哪些书。
面试官:你在项目期间遇到过的困难
讲了一下北斗sbas项目时,卫星定轨,igso卫星轨道总是有一颗定不出来。后来在服务区上查原因,balabala。
面试官:看过Linux内核吗?
我心里一怔懵逼。那啥,
我:只是会用常用的linux进行服务器管理,用linux的vi写代码,gcc编译,gdb调试。内核部分还没有时间看。
面试官:拥塞控制会吗
这个用画图的方式讲解了一下慢启动,拥塞避免和快速恢复三个状态以及转换关系。但是其中有两个转换搞反了。面试完回去查了才发现。
面试官:线程你了解多少
讲了一下用户级线程和内核级线程。实现多线程原理balabala。