本人就读于某无导师制培训班,研二在百度+腾讯实习过,目前想转java技术栈或wlb一下,就投递了一些外企和美团阿里,至于字节与拼多多,个人实在无法接受周末上班,就没有投递了。

年前准备了一下简历,先海投了阿里几个部门热下身,没想到投递一时爽,面试火葬场,本人共参加了阿里七个部门的提前批面试,通过了五个,最终选择了某偏向金融支付的部门,这也和我的职业规划相近,本人目前是打算在互联网/外企先工作一下,然后社招去金融类的国企(银行为主),毕竟还是吃国家饭靠谱。。。

阿里

部门A

自我介绍,聊实习,在腾讯和百度做过什么有意义的事情,遇到过什么技术上的难点,怎么解决的?C++:如何实现的多态?多态的类型,介绍一下虚函数表;介绍一下内存对齐,如何序列化一个结构体进行传输?需要注意哪些问题?C++程序编译运行的过程,如何链接的?如何查看是否有内存泄漏的问题?动态表和静态表的区别?(不太会)Linux中如何查看占有系统资源较多的进程,如何查看占有某端口的进程?Troc目录下存放的是什么内容?(不会)计算机网络:https和http的区别,https和http性能比较?网络流的字节序?TCP三次握手的过程,为什么要三次握手?如何实现的拥塞控制和差错控制?口述算法:括号配对和删除链表中倒数第n个节点。Kafka在应用中解决了什么问题?Trpc中如何实现的信息传输(单例模式);介绍一下比特币的特点;做过的项目有什么难点?怎么解决的?

结果通过,但是做的方向太底层,拒了;

部门B

聊实习:说说在百度用过的Hadoop,说说在腾讯做了什么,以后想走业务还是走底层技术?说说“实时语言”这个项目,为什么没有深入下去,涉及哪些基础知识?应用背景是什么?操作系统中进程间通信的方式?(说了各种锁、信号量、barrier和原子操作)操作系统中子进程和父进程哪些是一样的?有没有听说过ebpf?手撕代码:顺时针遍历数组;

 

聊实习:在腾讯做过的最难的项目,有什么收获?Grpc与trpc的异同?在百度呢?用过hadoop不?Hadoop工作流程是怎么样的?底层如何实现分片和mapreduce?如果让你设计你会怎么做?手撕代码:二叉树的俯视图
聊实习:在腾讯主要做了什么?介绍一下trpc框架,和grpc有什么区别?如何实现的自定义监控?监控上报和全链路追踪有什么区别?数据上报的时候是采取的“pull”还是“push”,这两种方式有什么优劣?结合具体案例说一下?重构项目的时候应该怎么做?需要注意什么?比特币系统中,如何真正的篡改一个数据?

结果通过,但是由于职业规划在上海,这个部门不是在上海,只能无奈拒绝了。。。

 

部门C

聊实习:说一下自己觉得做得最好的项目;如何判断一种语言是否具有实时性?场景题:假设搜索引擎的关键字a和b对应的文档列表分别是lista和listb,然后这两个list都很长,且存储的是文章得id,问怎么求a和b交集。说了归并、hash表的思路,然后面试官说可以用位运算(一个int32的数组,每个数字的每一位可以代表一个文章id);手撕上述题目的伪代码;C++中多态有哪些,C++中的析构函数与构造函数可以多态嘛?Linux内核中锁机制有哪些?自旋锁和读写锁会引起用户态到内核态的转移吗?时间片轮转的调度算法了解不?Linux内核中进程调度有什么方法?
聊实习:腾讯的重构项目是这么做的?百度中的知识图谱在广告触发中的作用是什么样的?场景题:怎么加速图谱查找?(建索引);图谱中怎么精确匹配商品属性(如颜色、尺寸等)?如果查到了多个匹配项怎么做合并?怎么做排序?图谱和搜索引擎的联系有了解吗?基础知识:用户态和内核态的区别?Open和close一个文件哪些步骤涉及到了内核态?加锁会涉及到内核态吗?代码题:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。要求打印所有的重复数字且时间复杂度O(n),空间复杂度O(1)

结果通过,但是部门是做存储的,不太感兴趣。。。

部门D

聊实习:在百度做过的最难的事情是什么?收获最多的事情是什么?在学校的项目哪个做的最有心得?你在里面做了什么?有什么收获?通过实习,你以后希望的工作方向是什么样的?场景题:1、如何设计实现一个类似于map的数据结构,要求插入、查找、删除都是O(1);存储内容为k-v对;(双链表+哈希表)2、如何实现一个LRU缓存系统?(双链表+hash表);3、集群中多台机器如何保证生成的id互异?(可以选举一个master节点,与其进行通信);如果没有master节点呢?(用时间+ip地址做随机数种子生成)基础知识:数据库中乐观锁与悲观锁?如何找到10亿个数据中第二大的数?时间复杂度?操作系统中死锁是什么情况?C++中new一个对象底层是这么做的?手撕代码:顺时针遍历数组的变种。
聊实习:在腾讯怎么实现的自定义插件?遇到了什么困难?在百度做过的最有挑战的事情是什么?对比一下百度和腾讯的区别?对编程的看法?最近看过的技术书籍是什么?对高可用的理解是什么?基础知识:http与https的区别?介绍一下HDFS?浏览器输入一个网址后会发生什么?场景题:A向B转账的同时B向A转账,怎么避免死锁?(加一个计时器,如果某一线程长时间占据资源不释放的话,就将其挂起)

又是一个主力在杭州的部门,无奈拒了。。。

部门E

C++中的协程用过吗?(不会)线程与进程的区别,进程锁的类型与底层实现?腾讯中为什么要重构那个项目?重构之后有什么提升?怎么重构的?手撕代码:lc443、lc471

471是道hard,磕磕绊绊写出来了,但是面试官嫌弃写得太慢给挂了,行吧。。。

部门F

上来先手撕代码:LRU;聊项目:倒排索引和倒排文件怎么实现的?倒排文件求交集怎么做比较快?(位图)位图稀疏的话怎么优化?(稀疏矩阵的压缩)怎么压缩的?(不会)怎么实现的数据编码?为什么要编码?在腾讯做过什么?最有意义的是?遇到了什么困难?怎么解决的?基础题:static是做什么的?虚函数的实现原理?B继承A,A中的构造函数调用了一个虚函数(在B中被重写),那么B继承A的构造函数之后会调用哪个虚函数?进程有几种状态?怎么切换的?数据库的acid是什么?数据库怎么建索引?(用的时候搜一下,记不清了)

不想做存储,二面没面

部门G

面试遇到了师姐。。。师姐面:实习三连(解决过什么问题?为什么要这样做?学到了什么新技能?);广度面:用过数据库嘛?用过哪些数据结构?刷过什么题,哪道题给你留下了比较深的印象?用过kafka、redis嘛?怎么用的?看过源码嘛?网络知识了解哪些?操作系统呢?体系结构呢?除了工作还写代码嘛?对什么方向感兴趣?以后职业规划什么样的?
主管面:你在腾讯百度实习过,感觉如何?俩家公司有啥区别?我感觉你工作能力应该没啥问题,腾讯给你发offer的话你会去吗?转java技术栈愿意吗?什么时候可以来实习?

最终阿里选择了该部门,主要是和金融业务相关,个人感兴趣一点点;

美团

美团投递的是基础平台然后被自研数据库捞了,听说里面有组是魔改MySQL的,还挺感兴趣,毕竟大多数金融公司还是会用MySQL的,方便以后上岸,哈哈哈

解释Cpp内存对齐,给了两个结构体说一下占空间大小;cpp内存模型说一下;线程同步的方式有哪些,分别是什么样的?cpp的vector介绍一下(动态表);介绍一下网络里面三次握手与四次挥手,TCP的滑动窗口;Linux操作:哪些参数反映了系统当前状态?文件操作符有什么用?怎么查找文件名带有aa的?一个日志文件过大应该怎么打开?数据库的acid介绍一下,数据库的封锁等级?数据的幻读?分布式算法了解哪些,用过什么?无锁算法了解哪些?活锁与死锁介绍一下;在腾讯实习的内容介绍一写,学到了什么?单测和接口测试怎么做的?圈复杂度怎么计算的?手撕代码:LRU
聊项目、实习,最有挑战的项目,收获最多的项目?学习新知识的方式?解释一下比特币里面的默克尔树和double spending,基础知识:四次挥手过程,wait-time和close-time的含义与作用,操作系统里面内存分配模型(页式、段页式、伙伴系统),缺页中断怎么处理,协程和线程的区别,场景题:如何设计一个多线程情况下定时唤醒框架?需要用到哪些数据结构?手撕代码:lc82
聊项目,聊实习,聊职业规划,了解希尔排序吗?了解快速排序吗,如何优化快排?快排和堆排的适用场景?20min

结果已OC

Paypal

paypal是我的梦中情司,所以暑期实习刚开始就第一时间找了师姐内推,哈哈;晚一步就没机会了。。。

 

问了一下百度实习的工作内容,聊cpp基础:虚函数的用法以及作用,C++11中的move语义以及智能指针,C++中的类型转换?使用多线程和多进程的场景,vector扩容的方法,unordered_map和map的区别,以及插入查找删除的时间复杂度?C++的内存分配,new操作封装了什么?手撕:cpp中string类,要求实现:构造函数、拷贝构造函数、赋值运算符重载和析构函数;什么时候会隐式的调用构造函数?如何优化这些实现?
问了项目和实习,socket发包的时候怎么解决粘包的问题,三次握手的连接怎么建立的?redis用过什么?知道有序集合的底层怎么实现的吗?讨论了一下用红黑树和B+树实现的优劣(实际用的是跳表);手撕代码:三数之和;

 

技术leader面:如何设计一个mapreduce任务?如何设计负载均衡算法?rpc框架的主要工作流程?聊天:为什么要来pp,意向强烈吗?业务兴趣?

已接offer,也是最想去的公司了!另外赞一下paypal的HR同学,太认真负责了,还会帮我们实习生争取涨薪,大赞大赞!

 

NVDIA

聊项目,聊实习,大约30min;socket编程中建立连接需要哪些操作,TCP里面详细描述一下三次握手;讲一下选择重传协议,下载一个文件时***为什么会先上升再平滑?32位机器与64位机器的区别是什么?如何扩展内存?讲一下虚拟内存,cache与交换区的区别?对于CPU来说怎么区分数据和地址?gdb怎么调试程序?gdp解析coredump文件的结果是什么?static关键字的作用?智能指针的用法?匿名函数用过吗?手撕代码:lc8,lc21
两轮连面,两个面试官,每人大概30-40min;
自我介绍+实习+项目三件套,进程间同步的方法?堆和栈的区别?了解驱动开发吗?(不了解)智力题:1000瓶酒,1瓶有毒,老鼠喝下去之后1h会死亡,那么最少用多少只老鼠可以在1h内筛选出那瓶有毒的酒;(要用二进制编码的思想)编程题:给定两个字符串a和b,判断b中的字符在a中是否都出现过;
自我介绍+实习+项目三件套,然后问了关于学校与实习感受的区别,还有实习的感触,编程题:给定一个只包含L和R的字符串,假设等量的L和R是一个balance,那么求该字符串中出现balance子串的最多个数;

 

面试官人在美国,全英面试,what is your most proud of project in intership?Do you know threads and processes?what is the different of threads and processes?when we want to share memory, how do it? can you deep talk about it?
Let's do a code: find the rotation location of a rotation array.

已OC,但是nv要求实习满三个月,学院又要求八月份交论文,所以就很尴尬。。。

 

微软

笔试完了之后杳无音讯,上海微软太难了。。。

 

SAP

面试很基础,但是听说SAP要用内部自研的编程语言,就很尴尬。。。

说一点实习之后的小小体会,国内互联网公司确实待遇很香,但是不可避免的会出现一些倒排需求的情况,而且工作和生活无法分开,及时下班了,也要随时oncall的感觉;对于我这种想下了班陪陪女朋友,做点自己的事情,同时又没有奋斗精神的人来说,可能并不是一种好的选择,总之,大家共勉,希望都能找到自己合适又满意的工作!!!3

再分享给大家我刷过的电子书和面试题合集~文末有预留免费的下载地址大家可以直接拿到!

 

Java面试题目录

 

还有一些电子书也可以分享给大家

 

除此之外还有Elasticsearch(24道)Memcached(23道)Java常问知识点(200道+)SpringBoot(22道)SpringCloud(8道)Linux(45道)MQ(12道)

由于文案过长,这里就不把全部面试专题(答案)一一展示出来了下面是所有Java面试的目录题,对于这本1000道的Java面试宝典感兴趣的朋友们“查看下图”获得免费获取方式!