面试刷题10-1

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)

  1. 介绍比较熟悉的项目

  2. 上线了吗

  3. 什么是线程安全?

  4. 不安全是什么样的情况?

  5. Java 中有哪些方式可以实现线程安全?

  6. Synchronized 和 Lock 有什么区别?

  7. 怎么理解可重入?

  8. 集群环境下怎么实现线程安全?怎么同步实现?

  9. 接触过 Redis 吗?

  10. 介绍一下 Java 中的 String

  11. String 为什么要设置为不可变的?

  12. 项目中什么情况下用到多线程?

  13. 线程池有什么优势?

  14. 有接触过消息队列吗?你觉得消息队列可以解决什么问题?

  15. 自己平常对哪方面技术比较感兴趣?

  16. 研究方向是什么?
     

一面

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分钟左右

  1. 自我介绍
  2. 安卓项目
  3. Activity和Fragment,生命周期
  4. SharedPreference底层实现,不会
  5. 数据库,B+树底层实现
  6. service
  7. 手写单例,解释
  8. 线程并发问题,以虚拟机的角度解释???
  9. 如何等待多个线程都执行完了再往下执行
  10. 锁的优化和升级,这块忘了,直接傻了
  11. 动态代理,作用和场景
  12. TCP四次挥手,TIME_WAIT状态的作用,除了确认ACK是否被接收方接收到还有什么作用吗???
  13. HTTPs过程
  14. 虚拟内存?瞎扯。。。
  15. 内核态和用户态,分块??8会
  16. 手撕最大堆,实现对应的push和pop操作
  17. 提问

 

 

一、地平线(嵌入式软件研发工程师-南京,提前批免笔试):

一面(电话面试):

(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。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值