面试刷题12-4

真正学习Java是从4月份开始学的,算下来学Java时间真的少!前面很多东西做了对找Java工作也没有用,有个明确的计划真的很重要啊。正式准备面试知识是从6月份开始准备的,当时就是找别人的Java面经,自己不会的题记下来然后弄懂(后面面试中发现不仅要弄懂而且还要进行扩展),因为白天要去实习所以只能每晚把题记在本子上带去办公室,其实记在本子上感觉也是挺好的方式。刷面经一直从6月刷到7月底,两个月的时间,从Java底层、JVM、多线程到计算机网络,计算机系统,数据库,分布式,算法,Linux操作等等都过了一遍。8月份就开始做测试了,其实8月份笔试少但大部分时间昨晚测试都没有想学习的欲望了,人也开始变得焦虑,所以刷面经还是要趁早啊。

实在是太无聊了,写了这么多。

总结一句话:瞄准一个方向使劲学,不要贪多,先深入然后再扩展,人的精力真的有限(不排除有些人真的聪明),也不要想着弯道超车,不是每个人的车技都那么好!!

以上,一个非科班进互联网软件开发行业的经历。

奉上我的笔记与面经吧!

召唤@#¥@#%#¥……¥%&%#%¥@!!%¥¥%……&()&)#¥%


 

盒马生鲜提前批一面 时间为7月20多号 【凉】

人生第一次工作面试,没在状态...

  • 单点登录
  • HTTP状态
  • 负载均衡分类
  • 熔断保护

 

  • java基本数据类型/具体
  • String属于什么类型
  • goto

Java中没有goto

  • 重写equals为什么要重写hashcode

使用hashmap,先比较hashcode,在比较equals

  • TCP三次连接
  • 七层网络四层网络
  • IP,TCP属于哪个层
  • HTTP属于哪一层
  • hashmap和hashtable
  • 什么是线程安全
  • volatile
  • 什么是可见性
  • synchronized和lock区别
  • 栈和堆的区别
  • 垃圾回收算法

复制算法,标记清除,标记整理

  • CMS
  • spring特点
  • 设计模式
  • 数据库事务隔离
  • ACID
  • 你有什么问题

 

 

中兴提前批-2019/7/31 100min

  • 项目介绍
  • 项目问题: 分布式, 单点登录实现过程, 网关服务, 负载均衡, 有哪些负载均衡策略, zipkin如何实现, 熔断如何实现, 熔断机制
  • 多线程有哪些实现方式, FutureTask有哪些特性
  • 进程和线程的区别, 协程
  • python协程如何实现
  • 造成死锁的原因, 如何解决
  • ==和equals比较
  • Linux有哪些内存
  • top指令介绍, 查看网络端口指令
  • 用过哪些前端工具, css干什么的
  • 什么是ajax
  • 事务有哪些, 具体一点, Redis事务有回滚吗
  • 矩阵翻转
  • 数组和链表的区别
  • 双向链表删除节点手写代码, 并发情况下如何考虑
  • JAVA与C++区别

综合面:

offer洽谈-2019/9/1

分两部分

  • 对薪酬及岗位介绍
  • 单独面谈offer, 问一些基本情况, 面试官填一些内容向上申请月薪, 确认后自己问了一些问题

阿里巴巴-质量测评软件开发-2019/7/31 35min

一面

  • 自我介绍
  • 项目介绍, 单点登录, 链路跟踪
  • Linux查看系统进程, 查看网络接口, 查看内存, load三个指标
  • spring中IOC/DI, AOP如何实现
  • RabbitMQ
  • Redis
  • 多路复用, Reactor事件分发器
  • 数据库如何查询大数据
  • 数据库建立索引有哪些注意的地方
  • 数据库索引有哪些
  • 左连接和右连接的区别
  • 数据序列化
  • Java中HashMap与HashTable区别
  • Java中HashMap底层数据结构
  • Java中volatile有什么用, 能保证原子性吗
  • 有哪些排序算法, 堆的时间复杂度
  • 跨域
  • 微信发红包如何测试
  • 100亿数据获取第K个大的值
  • 你有什么问题

二面-2019/8/5 40min

  • 自我介绍
  • 项目
  • 能不能来不来实习
  • 请求过多如何解决
  • 单点登录如何存储token, 每个地方都存储嘛
  • 在线编程题
  • 你有什么问题

三面-2019/8/13 56min

  • 自我介绍
  • 项目介绍
  • SSH如何保持连接, 连接过程
  • 你对分布式看法
  • 注册服务, zookeeper能否实现负载均衡
  • 如何实现容错
  • 链路跟踪怎么做
  • 单点登录怎么做的? 为什么想到会这么做? 多个请求会出现什么
  • springcloud与springboot的区别
  • ArrayList与LinkedList区别? 多线程安全吗? 如何实现多线程安全?
  • 类加载机制, 如何打破该机制
  • 什么是ORM
  • 冒泡排序过程? 比较多少次?
  • 项目中神经网络模型用了哪些? 数据可视化怎么做?
  • 你有什么问题

四面-2019-8-20 39min

  • 没有自我介绍
  • 能不能来实习
  • 哪些项目你认为做的很好, 推销一下
  • 淘宝生成订单向支付宝发送, 支付宝处理订单后返回凭证。这一过程如何设计系统架构? (面试的是测试岗位...)
  • 接着上一个问题, 消息传输过程中会有哪些问题
  • 有没有发表论文
  • 你有什么问题
  • 你喜欢那个方向? 你觉得你能行吗?

五面-2019/8/28 55min

实际上是第三面, 前面四面只记录了两面

  • 你认为做的最好的项目
  • 微服务的优点缺点
  • 为什么能保证高性能
  • 服务注册时上传了一些什么内容
  • 方法调用时获得的什么内容
  • 如何实现负载均衡
  • 为什么采用轮询的方式进行负载均衡
  • 负载均衡提升了什么
  • 如何实现网关服务, 网关服务的路由与负载均衡的区别
  • 容错保护机制
  • 如何判断什么时候进行降级服务
  • 如何进行降级服务
  • 如果不考虑降级会怎么
  • 如果不考虑容错保护而在应用层考虑失败会怎么样
  • 限流机制
  • 什么是超时
  • 项目过程中难点是什么, 是怎么解决
  • 你做的项目之间有什么关联
  • 项目压缩的话实际做多久
  • 机器学习项目
  • 你有什么问题

腾讯-后台开发-2019/8/6 55min 【问我几次C++都说不怎么会-凉】

  • 自我介绍
  • 上课学习了哪些内容
  • c++中class, struct, union
  • c++中&和*区别
  • TCP与UDP的区别, 场景, TCP如何实现可靠传输
  • TCP粘包现象, TCP分别传输10字节, 20字节, 30字节能够一下接收到60字节码
  • TCP三次握手, 四次挥手, 具体状态, 为什么要2MSL
  • 多线程与多进程区别
  • 多线程与多进程之间的通信
  • 输入网址到获得页面过程, 用了哪些网络协议
  • 如何获得域名
  • DNS用的什么端口, 协议, 使用UDP吗
  • 什么是ARP
  • HTTP与HTTPS区别, HTTPS端口一定是443吗
  • Redis使用介绍(回答完后没有反应, 继续介绍底层数据结构, 持久化, 缓存策略, 淘汰策略)
  • 什么是二范式, 具体例子
  • MySQL中MySIM与InnoDB结构, 聚集索引与非聚集索引区别
  • 事物四种隔离级别, MySIM与InnoDB分别是什么(emmm, InnoDB不支持事物)
  • MySIM与InnoDB区别
  • left join 过程
  • 快排

浦发-系统开发-2019/8/23 20min面试+50min笔试

成都地区2000人左右面试......
问成绩

针对项目问:

  • 微服务实现怎样的功能
  • 如何实现负载均衡
  • 如何实现网关服务
  • 事务一致性问题
  • ...

基础知识:

  • 有哪些设计模式

  • Spring中有哪些设计模式

  • SpringCloud和SpringBoot的区别

  • 路由器属于七层模型中的什么层

  • 快排

  • 如何快速查找指定文件名, 文件内容

  • Java的HashMap遍历方式

  • MySQL端口号

  • 主键外键

  • 行转列

  • 总结:面试较轻松


多益网-游戏开发(投的后台开发) 26min

  • 项目介绍
  • 平时玩不玩游戏
  • 地图导航算法...
  • 函数指针
  • C指针
  • C中定义与声明区别
  • python引用计数对象如何实现(???)
  • 线程与进程区别
  • 在线笔试: 数组往右移动K位

offer 2019/9/2

  • 13k,广州

  • 总结:很缺人,但是工资太低


猿辅导-后端服务

一面 2019/8/23 50min

  • 项目实现哪些功能, 问项目细节
  • 线程安全
  • 多线程synchronized锁住类方法是锁住的什么?
  • 线程池有哪些
  • 线程与进程区别
  • Java内存模式(忘记问的是JVM内存模型还是JMM了, 可能回答错了)
  • SpringBoot中如何写starter
  • MySQL索引有哪些
  • 聚集索引与非聚集索引的区别
    在线笔试:
  • 删除链表倒数第k个节点(双指针)
  • 判断树是否为完全二叉树

二面 2019/8/30 56min

  • 项目介绍

  • 如何实现服务发现

  • 如何实现负载均衡

  • 如何实现路由配置

  • 服务之间如何通讯

  • 服务如何调用

 

  • 序列化是如何实现

  • final修饰符的作用

  • Redis数据结构

  • Redis中的字典与Java中HashMap字典区别

  • HashMap为什么不是线程安全(安全失败与快速失败)

  • 了解hashCode和equals吗

  • TCP与UDP的区别

  • 常用的单例模式, 细讲几个

  • 手写单例模式(双重校验锁), 为什么要加volatile, synchornized锁住的是什么

  • 环形链表实现队列, 删除后需要保存原队列, 这样就不用频繁地进行创建

    三面 2019/9/3 60min 现场面

  • 问项目

  • 两个线程一个打印奇数一个打印偶数 【凉】

  • 有序链表合并

  • 猿辅导最近一个笔试第二题,3个人一个组合,输出有几个组合

  • 二分法求一个数的平方根

  • 总结:面试体验很好,菜是原罪


微策略-后端开发

一面-2019/8/27 60min 【英文凉】

  • 没有自我介绍, 没有项目提问
  • 你在之前的工作中有哪些地方你觉得可以提升的
  • 你认为计算机中什么技术最重要
  • 如果有多个任务需要去做, 你怎么安排任务
  • 两道编程题
  1. 链表翻转
  2. 位操作:
  • We have an integer array where all the elements appear twice while only 1 element appears once. Please find that element.

  • We have an integer array where all the elements appear twice while only 2 elements appears once. Please find the 2 elements.

  • 总结:英文问题,菜是原罪


联影-AI软件开发-成都

简历面-2019/8/29 13min

  • 哪个项目做的好
  • goto是关键字吗

不是

  • char能够表示中文字符吗

可以

  • 多线程同步有哪些方式

lock 和synchoried

  • sleep和yield的区别
  • try-catch-finally执行
  • 常用的设计模式
  • 垃圾回收算法有哪些
  • 线程池用过吗
  • MySQL索引
  • MySQL中自增主键, 删除数据重启后插入数据的主键值
  • MySQL中的heap表
  • MySQl中怎么区分float与double
  • MySQL中varchar与char区别

一面 2019/9/7 30min

  • 项目介绍
  • TCP与UDP的区别
  • 三次握手过程,为什么要三次握手
  • 多态
  • 为什么要用多态
  • 梯度斜率
  • 设计模式的开闭原则
  • djikstr最短路径
  • 一些其他问题

HR面 2019/9/8 20min

  • 自我介绍
  • 择业标准
  • 了解联影吗
  • 自我评价
  • 性格上优缺点
  • 有哪些offer

极米-Java软件开发-成都 【凉】

一面-2019/9/2 20min

  • 自我介绍
  • 什么是微服务
  • 微服务优缺点
  • 注册发现如何实现
  • TCP三次握手四次握手
  • TCP连接中,如果客户端挂掉之前没有关闭连接,会怎么样
  • 乐观锁与悲观锁
  • 一个对象有两个方法被synchronized修饰,可以同时调用两个方法吗

不能

  • 快排
  • 二叉排序

-总结:TCP挂掉的问题按照网上来回答的但应该不是面试官想要的;倒数第三个问题栽了,答案是不可以,因为synchronized锁住对象或类,所以不允许同时调用一个对象的两个synchronized方法


跟谁学

一面 2019/9/3 70min

  • 自我介绍

  • 写代码:树定义

  • 写代码:从左到右打印树的叶子节点

层序遍历

  • 写代码:打印树最左边节点同一层的节点

  • 链表和数组的区别

  • 为什么数组可以直接定位到索引

  • Java中有哪些数组与链表类

  • ArrayList如何插入一个元素,底层实现

  • 实现一个线程池需要注意一些什么

几个核心参数

  • 用过servlet吗,servlet是单例模式吗

  • 单例模式是什么

  • 写代码:写单例模式;为什么要判断两次,为什么要用volatile

  • 写代码:实现一个线程安全方法;synchronized锁住的是什么

  • TCP/IP区别,TCP/IP的首部结构, TCP大还是IP大

  • 写代码:left join查询, 举例说明

  • 数据库查询过程

  • 一条更新语句需要开启事务吗,为什么

  • 什么是幻读

  • 什么是间隙锁,什么时候上间隙锁

  • 什么是B+树,为什么不用二叉树

  • 为什么Windows上的程序不能在Linux上使用

  • 计算费CPU还是I/O费CPU

  • CPU计算中加法快还是乘法快

  • Session复制如何实现,如何实现持久化

  • 项目调用失败如何排查

  • 总结:问的挺难的

二面 2019/9/9 44min

  • 写代码:链表排序,只能使用辅助接点
  • 内部类与匿名类在使用上有什么区别
  • HTTP与HTTPS的区别
  • 自我优点与评价
  • 学习了哪些书籍
  • 能不能来实习
  • 薪资预期是多少
  • 其他问题忘了

总结:谈薪资


商汤科技 【凉】

一面 2019/9/6 38min

  • 如何实现负载均衡
  • 负载均衡有哪些策略
  • 如何设计权重轮询
  • 如何熔断处理
  • 服务注册,Eurake与zookeeper的区别,RPC与REST的区别
  • 网关服务
  • 网关服务与nginx的区别
  • OOP思想分析抽象与接口
  • concurrentHashMap与HashMap的区别
  • 如何实现线程安全
  • synchronized与volatile的区别
  • 乐观锁与悲观锁的区别
  • 库存扣减问题

二面 2019/9/6 22min

  • 什么时候学习Java的,为什么学习运维,学多久的Python
  • SSM框架中如何实现用户登录,从底层到实现
  • Cookie与Session的区别
  • 如何获取用户输入
  • 如何区分post与get
  • 如何区分返回的是Josn还是HTML
  • 如何获取user/1中的id
  • Redis怎么使用的
  • 多线程下Redis安全吗

总结:有些问题很基础,也很刁钻,从这个面试看到了自己许多薄弱点


有赞 【凉】

一面 2019/9/7 30min

  • 自我介绍
  • hashmap底层结构,红黑树什么时候退化,如何扩容
  • concurrentHashMap底层结构,锁的个数是固定的吗
  • Java中有什么锁
  • 可重入锁是怎么实现可重入的
  • AQS怎么实现的,怎样锁住线程的
  • 什么叫双亲委托,为什么叫双亲委托(???),自定义classLoader重写什么方法
  • JVM内存划分
  • 垃圾清除算法
  • 老年代与新生代比例
  • JMM
  • young gc与full gc发生在什么时候
  • HTTP中post与get区别, post能够在URL中添加参数嘛
  • 设计模式,模板模式用于什么情况
  • OOP设计原则,开闭原则举例说明
  • springboot中的run方法流程
  • springcloud用到了哪些模块,springcloud config是怎么实现刷新配置的

小米

一面 2019/9/9 27min

  • 编程题:链表翻转
  • HashMap底层结构,插入操作,扩容操作,为什么要扩充2倍长度
  • hash表与二叉树的区别
  • static从加载到使用, static int a = 10;会直接初始化为10吗
  • ArrayList与LinkedList的区别
  • ArrayList插入无序数后如何排序
  • 讲一讲volatile,为什么单例模式二重校验锁下实例要声明为volatile
  • 讲一讲synchronized,锁升级,讲一讲轻量锁与偏向锁,两个线程在轻量锁下有什么操作
  • 讲一讲gc, CMS有哪些步骤
  • 项目是自己做的还是跟别人一起合作的
  • 如果你和同事对开发意见不一,你会怎么处理
  • 有同事想要把代码写的很完善,你想把代码写的简单,如何处理
  • 能来实习吗

二面 2019/9/10 35min

  • 自我介绍
  • 编程:使用堆实现队列【思路是对的,两个堆弄错变量名了,面试结束才发现。。。。】
  • 微服务如何实现负载均衡,如何判断服务是否为空闲
  • Redis有哪些数据结构
  • 订阅发布有用过吗
  • 哈希一致性当两个节点邻近如何处理
  • CAS
  • volatile
  • JVM, JMM
  • 字符串常量池,多个字段拼接用+好还是StringBuilder.append()

农行

笔试 2019/8/31

  • 图形数字推理,英语,专业知识(数据库,网络,操作系统,测试,算法), 心理测评

现场面 2019/9/11

整体流程:签到->分组->机试->自我介绍->公共题->专业知识

  • 机试题:给定字符串,字符串包含数组,求字符串中数字能组成的最大值
  • 自我介绍
  • 公共问题回答:微服务设计模式;SpringBoot优点;系统架构风格有哪些,优缺点

专业问题会根据技术栈来问,以下为Java专业问题

  • Java容器有哪些
  • 有哪些Map,HashTable与HashMap区别(问了别人concurrentHashMap与HashTable底层)
  • Seesion与Cookie的区别
  • Java下用过Redis吗
  • RESTFULL风格如何保证安全
  • 分布式下Session如何解决

现场签两方

  • 家在成都,听说是855,早点结束秋招吧

要是农行差额体检失败了,就等春招了!!!

 

 

 

1 - 准备

​ 课题组有个比我高一级的师兄,也是转互联网了,在我转行的过程中给了我很多的指导和帮助,让我少走了很多的弯路,所以一开始大的框架很清晰 (Thank you, cute boy~)。

​ 主要的知识包括以下几块:

​ 1.主语言(C++,因为之前有C语言开发的基础,就选择了C++;学习的路线无非也就是<>, <>,<>,<<深度探索C++对象模型>>,<>等)

​ 2.计算机基础(系统、网络,这里我主要看了计算机专业考研教材的那两本书,看的比较仔细;另外关于网络后来又看了极客时间上刘超的<<趣谈网络协议>>)

​ 3.数据结构与算法(这里推荐极客时间上王争的<<数据结构与算法之美>>,然后刷剑指offer和leetcode)

​ 4.数据库(同样推荐极客时间上的两个专栏:陈旸的<>和丁奇的<>,然后再去刷牛客和leetcode上的题)

​ 5.Linux常用命令(这个平时用ubuntu,所以比较熟悉,没有刻意去准备)

 

- 面经

2.1 美团(3面技术 + 1面hr,拿offer并签约)

一面:

项目:(下面的都不写了,基本上问的都差不多)

  1. 为什么想到用优先队列?优先队列如何实现?
  2. 数据库中的事务以及一致性问题;
  3. 数据库的底层实现(B+树,跳表);

数据结构与算法:

  1. 手撕:三数之和(leetcode 15)
  2. 场景:在微博上关注了1k个大v,大v们每人有1w条微博,要想快速的访问前100条,应该怎么做?(排序+堆)

网络:

  1. web页面请求过程:在浏览器中输入一个网址到获得一个页面,这个过程中有用到哪些协议?(DNS + HTTP + TCP + IP + ARP;这个问题基本上可以将所有的网络协议串起来,是一个很好的问题,值得注意)
  2. HTTP报文格式;
  3. 访问一个网址和提交一段代码到网上有何区别?(GET和POST的区别)

Linux常用命令:

  1. 如何查看内存空间?如何查看磁盘空间?(free; df -h)
  2. 如何查看进程?(ps aux/top)

二面:

数据结构与算法:

  1. 两个队列实现一个栈;
  2. 最长回文子串;(dp)
  3. 查找有重复元素的非降序列中第一次出现的数字;(变形的二分查找)

Linux命令:

  1. 一个文件"ip.txt",有两个字段ip(第一列)和访问时间(第二列),找出访问次数最多的ip

    1

    awk '{ips[$1]++;} END {for(ip in ips) printf("%s\t%d\n", ip, ips[ip]);}' ip.txt | sort -n -k 2 -r | head -n 1

(这道题主要考察了awk, sort, head和管道命令的运用,值得注意,另外还有像统计词频,杀死指定进程等也经常考察)

网络:

  1. TCP四次握手;(需要详细说明)
  2. 拥塞避免机制;
  3. web页面请求过程;

数据库:

  1. 索引:是什么?如何实现?
  2. sql引擎:有哪些?MyISAM和InnoDB的区别?B+树与B树的区别?

InnoDB 支持事务,MyISAM不支持事务

三面:

数据结构与算法:

  1. 手撕:堆排序,并分析时间复杂度;
  2. 手撕:链表中环的入口节点,并解释原因;
  3. 二叉搜索树的特征,查找和插入的时间复杂度;
  4. 为什么说二叉搜索树有时会不稳定,如何改进?(可能会退化为链表;改进为平衡二叉查找树)
  5. AVL树大概的调整过程;(左旋右旋)
  6. 红黑树的特征以及大概的调整过程;

网络:

  1. OSI网络分层模型,TCP/IP网络分层模型?(7层;5层)
  2. 为什么TCP/IP去除了表示层和会话层?(没必要搞那么复杂)
  3. TCP与UDP的区别;(TCP实现了可靠传输;UDP不保证可靠传输;)
  4. TCP如何实现可靠传输;(超时重传)
  5. TCP的发送窗口大小如何确定?(拥塞避免)

系统:

  1. IO高并发如何实现?
  2. 线程与进程的区别?
  3. 为什么进程的切换开销比线程大?

面试体验:极好


 

操作系统:

  1. 信号量机制;(整型、记录型、AND型、信号量集)
  2. 锁机制;(互斥锁、自旋锁)

网络:

  1. DNS的查询方式;(递归和迭代)
  2. HTTP与HTTPS的区别;(加密与否)
  3. HTTPS如何实现加密传输;(非对称加密机制)
  4. HTTPS的认证过程;
  5. TTL指的是什么?(Time To Live,生存时间,也是跳数限制)
  6. ARP协议;
  7. traceroute的过程;

数据结构与算法:

  1. 如何实现topK;(堆)
  2. 手撕:数组中连续子数组的最大和;(dp)
  3. 字符串转化为数字;(注意细节处理)

二面:

网络:

  1. web页面请求过程;

数据结构与算法:

  1. 数组中0,1,2分别代表三种颜色的小球,调整数组元素使得相同颜色的小球在一起,要求在时间复杂度为O(n),不能用额外空间;(双指针)
  2. 一个链表,value里面存了公司里所有人的年龄,希望你对这个链表做切分,切分出来的section越多越好,但是有一个条件:同一个年龄的人只允许分配到用一个section中,返回所有section的长度的数组;输入:29 -> 30 -> 31 -> 32 -> 31 -> NULL,输出:[1, 1, 3];(滑动窗口)

面试体验:极好

 

 

2.3 网易互娱(2面技术,拿offer,因裁员和游戏技术栈窄,拒!)

一面:

复盘笔试题:(骚操作,可怕~)

网络:

  1. TCP、UDP的区别;
  2. TCP如何实现可靠连接;
  3. socket编程;

系统:

  1. cache一致性;
  2. 虚拟内存与物理内存的区别;

游戏设计题:

  1. 吃鸡中,如何实现游戏毒圈的缩小方法;(极坐标+随机数)

智力题:

  1. 海盗分金;(博弈论)
  2. 三个火枪手;(博弈论)

二面:

没有聊实质性的技术问题,主要聊了游戏中常用的计算机图形学和随机洗牌算法;

面试体验:一般

 


 

2.4 华为(2面技术 + 1面hr,软开技术落后,加班多,251,拒!)

一面:

复盘笔试题:(又来一波骚操作)

数据结构与算法:

  1. 手撕:两个栈实现一个队列;

编译原理:(不懂)

二面:

数据结构与算法:

  1. 手撕:数据流的中位数;(两个堆)
  2. 手撕:二叉树的直径;(递归)

C++:

  1. 什么是纯虚函数?
  2. malloc(0)会怎么样?(脑子有坑?正常人都不会这样做吧?)

系统:

  1. 什么是死锁?

面试体验:一般

 

2.5 海康(2面技术 + 1面hr,技术落后,加班多,钱少,拒!)

一面:

  1. 双向链表的插入;
  2. 手撕快速排序;

二面:

主要聊项目,没啥实质性的技术问题;

面试体验:一般

 


 

2.6 头条(1面挂)

一面:

C++:

  1. C++中哪些函数不能被声明为虚函数?(普通、内联、构造、友元、静态)
  2. 构造函数为什么不能被声明为虚函数?(派生类的对象在基类构造函数调用前还不存在)
  3. 友元函数可以被声明为虚函数吗?为什么?(不能,友元函数不是成员函数,不能被继承,不支持运行时多态)

网络:

  1. 在浏览器中输入一个网址,服务器是如何找到你的主机的?(不会)

数据结构与算法:

  1. 手撕:字符串中回文子串的数目;(dp)
  2. 手撕:给你一个字符串,返回所有它能表示的IP地址;(回溯)
  3. 有10亿个数,如何找出其中最小的100个数;(堆)
  4. 说说堆排序的过程,建堆的时间复杂度是多少;(建堆+调整;O(n))

面试体验:不佳(面试官态度叼的一批,果然是宇宙条)

 


 

2.7 360(1面挂)

一面:

数据结构与算法:

  1. 重拍数组中的元素,使之组合起来能得到一个最大的数字;(重新定义比较器)
  2. 剪绳子;(dp或者贪心)

数据库:

  1. MySQL的引擎有哪些?区别?底层实现?索引?

场景分析:

  1. 1w人抢购100件商品,如何实现?(高并发)
  2. web漏洞有哪些?

面试体验:极差(远程面试的,面试官那边像菜市场一样,能听见个鬼,完全没心情面试)

2.8 旷世(1面挂)

一面:

系统:

  1. 线程与进程的区别?
  2. 进程什么时候由用户态转化为内核态?(系统调用、中断、陷入)

网络:

  1. TCP连接断开时为什么需要一个timewait状态?

算法:

  1. 找出两个序列中的最长公共子序列;(dp)

面试体验:一般

2.9 远景(2面技术 + 1面hr,面完挂)

一面:

C++:

  1. new和calloc的区别?
  2. 如何实现多态?
  3. 基类的虚函数的指针在派生类的虚标中吗?为什么要这样做?

算法:

  1. 括号生成;(回溯)

二面:

系统:

  1. 内核态与用户态的区别?(安全性)

网络:

  1. A向B发送一个消息,如何保证B正确收到?(可靠传输,超时重传)

算法:

  1. 两个并发线程T1和T2,分别只能打印A和B,要求写一段代码,可以一直打印序列"AABBAABB..."(不会)

面试体验:极差(二面面试官全程喷脏话,qnmlgb)

2.10 百度(2面挂)

一面:

主要聊些基本的概念问题,没有什么值得写的技术问题;

二面:

很全面的考察了计算机各方面的知识,由于非科班出身实在是短板太多,挂的不冤;

面试体验:极好

2.11 阿里(别问,问就是挂!从春招挂到秋招)

一面:(春招)

C++:

  1. vector和list中,删除末尾的元素,其指针和迭代器如何变化?若删除的是中间的元素呢?

算法:

  1. 有两个很大的文件,如何找出其中相同的行?

系统:

  1. 管道命令如何实现?

二面:(春招)

算法:

  1. 手撕:二叉树的后序遍历,递归和非递归;

场景:

  1. 两个很大的矩阵相乘,如何并行实现?(分块)

一面:(秋招)

数据库:问了很多关于sql的基本语法;

算法:手撕冒泡排序,并分析时间复杂度;

二面:(秋招)

算法:

  1. 海量数据排序;(堆,归并)
  2. 最长回文子串;

Linux命令:

  1. 写脚本杀死指定名称的进程;

你可能感兴趣的:(算法)