腾讯后台开发暑期实习生凉经

前几天面试了腾讯,腾讯反馈很快,过了一个小时不到就知道自己凉了(扎心了)。虽然凉了但是通过这次面试还是能找到自己很多问题,并且也积累了一些面试经验,特此分享给大家,如果中间有什么写的不对的请批评指正谢谢!

流程:面试官先让你介绍一下自己,接着会对你简历写的项目进行细节询问,因为我读研做的是目标检测,所以大部分问的是相关问题,他会跟你探讨你做的一些工作,然后评估你做这个项目的难易度。很尴尬我做的东西是在深度学习开源平台做的相关工作,然后通过复现一些顶会代码然后进行改进调参数等等,但是面试官想知道的是你对模型优化方向的成果(作为一个做深度学习研究的菜鸡仅仅只是在网络结构调参上面进行改进),特别是优化器等等。他问的很深,所以在面试之前建议先把自己简历写的项目多复习几遍,理清好思路。

面试感受:整个面试下来第一感觉是很难!腾讯考察的很多都是很深的知识,包括你研究的方向的意义,这个我被怼了,说我研究方向实际上很难落地。然后专业方面主要问了数据库、C++、操作系统。后台开发对数据库相关知识要求很高,这个方面问的很多。

面试官大概询问的问题有:

1、数据库(主要问的不是操作命令,问的是数据库系统!)

  • 什么是数据库事物?

事务是指作为单个逻辑工作单元执行的一系列操作,可以被看作一个单元的一系列SQL语句的集合。要么完全地执行,要么完全地不执行。如果不对数据库进行并发控制,可能会产生 脏读、非重复读、幻像读、丢失修改的异常情况。

事务的特性(ACID)

A, atomacity 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

C, consistency 一致性 事务将数据库从一种一致状态转变为下一种一致状态。也就是说,事务在完成时,必须使所有的数据都保持一致状态(各种 constraint 不被破坏)。

I, isolation 隔离性 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。换句话说,一个事务的影响在该事务提交前对其他事务都不可见。

D, durability 持久性 事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

  • mysql常用存储引擎有哪些?

innoDB存储引擎(很重要)、MyISAM存储引擎、MEMORY存储引擎、ARCHIVE存储引擎。

然后要你每个分析他的原理以及区别,他想要的是你特别熟悉,然后我比较菜只说了几个。

InnoDB索引底层数据结构-平衡多路查找树

脏读概念、四种隔离级别:

串行化:可避免脏读、不可重复读、幻读的发生;

b、Repeatable read(可重复读):可避免脏读、不可重复读的发生;

c、Read committed(读已提交):可避免脏读的发生;

d、Read uncommitted(读未提交)

 

  • 什么是死锁?怎么解决?

死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。

常见的解决死锁的方法

  • 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。
  • 在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;
  • 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;

如果业务处理不好可以用分布式事务锁或者使用乐观锁

2、C++

  • C++的STL库熟悉吗?

STL我实际只熟悉vector,auto这几个,然后面试官挺有耐心的给你讲解,实际是自己没做充分准备,后面还问我STL库源码实现。

  • C++里面的隐函数实现数据类型锁?

不会

3、操作系统

  • 内存调度机制,磁盘调度算法?

参考:https://blog.csdn.net/agsws/article/details/52663696

  • 进程间通信有哪些方法?

管道、FIFO、消息队列、信号量、共享内存以及socket

 

发布了176 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_27262727/article/details/104874643
今日推荐