1、这可能不只是一篇面经
这篇面经讲的很详细,分为:基础知识点分析、书单推荐、简历和笔面试的经验技巧、面试的过程(题目及回答的点)
1、基础知识:
-
算法和数据结构
- 数组、链表、二叉树、队列、栈的各种操作(性能,场景)
- 二分查找和各种变种的二分查找
- 各类排序算法以及复杂度分析(快排、归并、堆)
- 各类算法题(手写)
- 理解并可以分析时间和空间复杂度。
- 动态规划(笔试回回有。。)、贪心。
- 红黑树、AVL树、Hash树、Tire树、B树、B+树。
- 图算法(比较少,也就两个最短路径算法理解吧)
-
计算机网络
- OSI7层模型(TCP4层)
- 每层的协议
- url到页面的过程
- HTTP
- http/https 1.0、1.1、2.0
- get/post 以及幂等性
- http 协议头相关
- 网络攻击(CSRF、XSS)
- TCP/IP
- 三次握手、四次挥手
- 拥塞控制(过程、阈值)
- 流量控制与滑动窗口
- TCP与UDP比较
- 子网划分(一般只有笔试有)
- DDos攻击
- (B)IO/NIO/AIO
- 三者原理,各个语言是怎么实现的
- Netty
- Linux内核select poll epoll
- OSI7层模型(TCP4层)
-
数据库(最多的还是mysql,Nosql有redis)
- 索引(包括分类及优化方式,失效条件,底层结构)
- sql语法(join,union,子查询,having,group by)
- 引擎对比(InnoDB,MyISAM)
- 数据库的锁(行锁,表锁,页级锁,意向锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式)
- 隔离级别,依次解决的问题(脏读、不可重复读、幻读)
- 事务的ACID
- B树、B+树
- 优化(explain,慢查询,show profile)
- 数据库的范式。
- 分库分表,主从复制,读写分离。
- Nosql相关(redis和memcached区别之类的,如果你熟悉redis,redis还有一堆要问的)
-
操作系统:
- 进程通信IPC(几种方式),与线程区别
- OS的几种策略(页面置换,进程调度等,每个里面有几种算法)
- 互斥与死锁相关的
- linux常用命令(问的时候都会给具体某一个场景)
- Linux内核相关(select、poll、epoll)
-
编程语言(这里只说Java):
- 把我之后的面经过一遍,Java感觉覆盖的就差不多了,不过下面还是分个类。
- Java基础(面向对象、四个特性、重载重写、static和final等等很多东西)
- 集合(HashMap、ConcurrentHashMap、各种List,最好结合源码看)
- 并发和多线程(线程池、SYNC和Lock锁机制、线程通信、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
- JVM(内存模型、GC垃圾回收,包括分代,GC算法,收集器、类加载和双亲委派、JVM调优,内存泄漏和内存溢出)
- IO/NIO相关
- 反射和代理、异常、Java8相关、序列化
- 设计模式(常用的,jdk中有的)
- Web相关(servlet、cookie/session、Spring<AOP、IOC、MVC、事务、动态代理>、Mybatis、Tomcat、Hibernate等)
- 看jdk源码
2、书单
-
1、算法与数据结构: 数据结构(严蔚敏)/大话数据结构 //如果觉得教材无聊就可以看大话系列,印象中里面还有很多诗 剑指Offer/程序员面试金典/编程珠玑/编程之美/牛客网+leetcode 程序员笔试面试最优解(左程云)/不如直接看左神的笔试面试指南视频 Java的版本(不是很推荐): 数据结构与算法经典问题解析(Java语言描述) 图解数据结构(使用Java) 2、计算机网络: 计算机网络(谢希仁) TCP/IP 详解 HTTP权威指南 图解TCP/IP 图解HTTP 3、数据库://数据库主要是多用,书上主要看索引和性能的部分 高性能MySQL/深入浅出MySQL 4、操作系统: OS原理:操作系统(课本,黑色的那个) Linux: Linux私房菜 //鸟哥写的,很全,包括bash部分 跟阿铭学Linux //主要偏重于命令和操作,比较浅显 5、java: Java疯狂讲义/Java编程思想/Java核心技术 卷1 深入理解Java虚拟机 并发编程的艺术/多线程编程核心技术 Effective Java Java程序员面试笔试宝典 //何昊的那本,个人感觉是突击知识点的神器 Java程序性能优化 实战Java高并发程序设计 6、Java Web: Spring实战/轻量级JavaEE 企业应用(红皮,讲SSH的) //主要看最后一部分Spring的就可以 深入JavaWeb技术内幕(阿里 许令波)//这个讲的还是比较深的 SpringBoot实战/深入实践SpringBoot 7、设计模式: 大话设计模式 //通俗易懂 各类博客的总结 8、分布式与大数据: 分布式服务框架原理与实践 大型网站技术架构 Hadoop实战(hadoop体系包括得很全) //还有一本我暂时想不起来名字了 9、其他: Git: Git权威指南 Git官方讲解视频(牛客网有带字幕的) Redis: Redis实战 还买了docker、springCloud等等一些工具书,因为太小众就不列举了
3、面试题目和回答概述
1、百度(123面)
一面 3.30 下午两点 45mins
- 自我介绍,印象最深最费心的项目(这个一套可以提前准备,在某些亮点可以估计抛出等面试官来问)
- 讲讲项目中的爬虫和优化怎么做的,为什么选用jsoup而没有用python的urllib
- 说说你了解的反爬虫措施,和针对异常的处理。
- 那你觉的你来做一个网站要从哪些方面考虑反爬虫。
这里可以提前和学习,即使你真正使用的只是一点,也可以在相关问题上做更深的了解。
最简单只分析请求,拦截所有非浏览器的直接请求(可以通过添加伪报头解决);查看refer页做防盗链接(可以改refer项);基于用户行为的策略,同一ip相似请求判定(代理或ip池,或间隔请求解决);基于用户session的策略(模拟多用户登录解决);封装前端数据,用js渲染生成(通过探取和模拟异步ajax请求解决);对ajax请求进行加密等等方法。
- 讲讲项目中怎么实现的充值,锁的机制和事务注解,如何保证了事务的一致性。
- spring层面做事务和数据库层面做的区别,各自实现方式。
- 聊了事务的传播性和隔离级别,问了mysql的默认隔离级别(可重复读)
- spring中事务传播性怎么配置(xml方式和注解方式,还有关于savepoint的使用)
- 算法:O(1)删除执行链表结点,做分析(其实是要指出剑指offer中那个直接copy值的方法的缺陷和隐患)
- 算法:二叉树的最长距离(递归的思想)
二面 3.30 下午五点 50mins
- 聊项目(这次是针对项目中的加密算法和安全性做了阐述,大概20分钟吧,之前爬虫那个例子已经说了项目亮点要怎么准备了,这里我就不多说了)
- 详细聊了聊spring的IOC和AOP思想
- 关于AOP在spring的应用(比如事务,通知,aspectJ,slf4j的原理,和log4j的对比)
- 关于jdk代理和cglib第三方代理(说出对接口代理和子类继承的区别)
- 用的什么数据库,Mysql。
- 最大的数据量多大,用了索引没有,怎么用的(聊了前缀索引,对于varchar类型的值,又聊了聊char,varchar,text,blob的关系和区别)。
- 为什么索引不能随便用,什么时候用(什么时候失效,什么时候最高效)。
- 如何达到索引开销和性能的平衡,用了一个表去举例。(方法就是,根据情境看经常做的查询是哪些,然后依次是什么查询条件,保证最高效索引的同时,也保证索引不失效,避免无效开销,并且根据show profile和explain功能进行对比分析)
- 数据库用了缓存没有,讲讲redis的理解(用作缓存,队列,也可做存储)。
- redis是单线程还是多线程的,举个例子(做计数器,rank排行榜)
- 讲讲hbase的原理,CloumnFamily包含哪些,region什么情况做分割,对于版本号这个第四维度的使用方式(一般默认三个版本)等等
- 让我等消息,说经理会联系我。
经理面 4.12 中午 40mins
- 经理面其实更加放松,不只是技术方面,还有生活,性格多方面,感觉是个技术+hr的综合面。
- 聊家庭,家乡,工作意愿,爱好等等(聊了十几分钟,感觉都很不错,然后之后的面试也就很轻松了,基本是我在讲他在听)
- 讲了讲项目的设计,包括异常的处理,数据库设计,通信模型的设计。
- 讲讲你理解的JVM吧(从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏等等吧)
- 然后说了下部门的技术栈和部门介绍,说了部门可能没有留用的hc,问我介不介意(当时还没offer当然说不介意只是希望去学习)
- 然后就说把我简历锁了,之后会给我发offer。
2、360
一面 4.12
- 自我介绍加项目
- 线程池如何优化的爬虫,数据规模
- 网络时延如何处理
- 同名影片如何选取,有没有更好的方式。
- 反爬虫的原理,从低级到高级说一下,分别如何应对
- 收获了什么
- 线程进程区别
- 说下资源方面的区别,共享,不共享
- 共享的具体哪些资源
- jvm内存模型
- 堆区的特点
- 数据库左连接右连接,场景
- 给200个200个数的数组,找到最大的200个
- git 常用的操作,git rebase和git merge区别
- 分布式数据库怎么调用
- linux常用命令,查看内存,查看磁盘使用率
360二面 4.12
- 聊项目,介绍下背景,怎么谈的
- 印象最深的模块及解决,其他项目呢,跟着老师做的,还有简历上没写的项目
- 项目经验还可以那基础怎么样自己觉得,
- 说下jvm吧你知道的,中间会问
- jvm详细如下
- 内存模型
- 垃圾回收
- 分代及回收算法
- 哪些作为gc root
- 收集器的特点分类
- 类加载机制和双亲委派模型
- 几个加载器
- tomcat类加载有什么不同,说加载顺序并不是双亲模型,具体顺序说一下
- 并发注意什么,线程实现同步的方式,通信
- 几种同步的区别
- 悲观锁乐观锁,底层怎么实现的,越详细越好
- 单例模式的特点,几种实现,容易引发的问题
- 如何防止内存泄露,哪些会容易造成
- jvm调优如何检查内存泄露,如何优化gc参数
- 写sql 查询带日期多次考试成绩表中,每个学生的每门课最高成绩,日期要准确
- 分别用having子句写和用子查询写
- 写代码 旋转数组中查找某一个值
360 三面 hr 4.12
这是唯一一篇hr面经,因为我只面过这一次hr,其他的三面要么是技术,要么只是打个电话说说情况,还没问问题就挂了电话(比如腾讯的)。
- 讲一下项目怎么接的,怎么跟甲方沟通,遇到的最大问题,怎么克服的
- 自己的项目和老师的项目和安排怎么协调。
- 平时有什么爱好,怎么安排自己的时间
- 摄影都去哪拍,喜欢什么运动,什么时候运动
- 为什么选我们部门,其他部门你怎么看
- 我们是做移动端后台的,喜欢玩手机吗
- 说说常用的app平时怎么用,频率
- 以后会不会创业,为什么
- 以后的规划,职业技术和生活两方面
hr面没有太多经验,个人生活爱好这类我感觉就是放轻松聊,规划方向这些可以自己提前准备准备,但是比如创业,offer(之前说过了),价值观一类的问题,其实你也不知道对方想要什么样的回答,干脆随缘吧。
3、腾讯
一面 4.23
- 上来看了我的简历问我会不会C++,我心想虽然学过,但是好几年不写,还是说不会吧,然后面试官很好,就不问了。
- hashmap底层结构画一下,手写代码做一个url解析器,用正则方式和hashMap的数据结构。
- 识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)
- 自己实现http response响应头的结构及解析,用buffer(写个伪代码)
- resp头中都有什么(主要考察http相关知识)
- 海量数据找到出现次数最多的100个(内存不足的时候可以先做hash分片,最后多路merge,每次操作可以用hashMap计数,也可以自己做hash函数计数)
- redis底层实现,zset数据结构(问到了SkipList跳表这种结构)
- jvm内存模型,分代,cpu100% 怎么排查(我以为问Jconsole的使用,其实是想问linux性能监测和调优)
- 用int值表示ip如何做(刚好32位bit一对一映射),写个伪代码做transfer
- nio模型说一下
- selector中的wakeup什么含义(这个答得不是很好)
- select poll epoll (linux内核相关的知识)
- arraylist.sort怎么实现的(这个可以看看TimSort的思想)
- 怎么看待java跟c++(说下区别和自己的感受)
- 能实习多久(这个好说)
- 去深圳工作怎么看(这个真没想过,不过当时说也可以吧)
- 有女朋友吗(...)
二面 4.24
二面其实就两个大问题,但一直往很深的地方问。
- 100亿个数找最大1000个(说了分片,用堆,再归并)
- 问你确定吗?(我一想是最大的1000个不是出现次数最多的,其实是可以顺序读取,还是用堆实现)
- 有什么缺点,分布不均匀(说一下堆的复杂度由来)
- 有没有其他思路(用hash散列,计数排序)
- 这个更慢,还有更快的吗(我心想我平时就都是答得堆啊,怎么这次还有更快的?)
- 然后讲了基于partition的划分思想(找到第k个开始partition,在左边就在右面递归,在右面就在左边递归,最后确定partition出最大的k个)
- 这种思想了解了,但最坏情况太差,不稳定,还有更快的吗
- 是不是要用概率统计学,抽样估计?
- 说下思想。。
- 不够精确,还有又精确又稳定的吗?
- 。。。
- 那又给你一个数,你怎么快速告诉我是不是在这100亿个数中?
- 这个我知道有可能是想问Bloom Filter,但是具体到hash函数去几个怎么算,怎么判断误差等细节,我也记不太清了,就说了说思想。
然后进入第二个问题:
- 一个进程最多申请多大空间(看机器cpu的处理位数看情况)‘
- 怎么保证进程间数据的安全?线程呢?
- 安全方面有没有做过一些研究?
- 登录验证怎么做的,为什么用md5,有没有改进(+salt使md5库难解出),微信用的什么方式你知道吗?你想想应该用什么方式?(这里可能是问SSO单点登录的原理吧,可以讲讲SSO JWT token等技术的原理,这个也是我实习之后了解到的,当时答得一般)
- 那说到通信安全,怎么保证http的安全性,幂等性,回调同一个会话怎么标识不同请求,不同会话怎么区分(这个每个问题都画图叙述了下)
- TCP 3次握手和timewait讲一下原理
- 讲一下滑动窗口,饱和了怎么处理
- http安全吗?https说一下?
- get和post请求
- linux怎么查看网络状态(vmstat)
- 查看udp的性能,udp端口多少,什么时候用udp?
- 为什么tcp不行?
- qq里哪些用的tcp哪些用udp?分别针对每种情况说一下为什么?
滴滴新锐(123面)
一面 5.12
- 说说你对现有Web开发框架的理解(从各个层入手横向对比优缺点,印象中说了SpringMVC和Struts,mybatis和hibernate及jpa)
- mybatis和hibernate各自的缓存原理和比较,hibernate的一级二级和查询缓存,还有针对缓存的miss率,置换策略,容量设置和性能的平衡问了自己的理解。
- 要你设计的话,如何实现一个线程池(就讲线程池的原理,从初始线程数,核心线程数,然后到任务队列,满了继续到最大线程数,再满了到饱和策略handler,饱和策略一般有哪几种,基本上要理解ThreadPoolExcuter的构造方法那几个参数)
- synchronized关键字,实现原理(和Lock对比着说,说到各自的优缺点,synchronized从最初性能差到jdk高版本后的锁膨胀机制,大大提高性能,再说底层实现,Lock的乐观锁机制,通过AQS队列同步器,调用了unsafe的CAS操作,CAS函数的参数及意义;同时可以说说synchronized底层原理,jvm层的moniter监视器,对于方法级和代码块级,互斥原理的不同,+1-1可重入的原理等)
- 算法:手写一个ArrayList类,实现add,remove,等基本的方法(主要考扩容的原理和实现,重点写出扩容机制以及扩容时的copy过程)
- 然后让对这个ArrayList进行改进,使之可以应对并发的场景
- 算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。
二面 5.12
- 说说你认为项目中技术最薄弱的一个地方(答了IO网络监控和通信模块,短连接性能太差)
- 举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)
- NIO的原理,jdk中有哪些工具和类去实现,如何实现(selector和channel的用法),真的好用吗?还可以用什么?(面试官应该是想问netty,因为没有实际用过,只能给他讲了netty的原理)
- 那来说说AIO吧,和NIO什么区别(对异步的理解),AIO在工程中如何实现的?(大概说了下ajax的回调函数),又问回调函数具体是怎么实现的(传递函数指针)。
- 然后借着异步IO想问消息队列,讲了一下几种模型和原理。(面试中没有用过没关系,只要你懂原理还是可以跟面试官讲,起码可以证明你是爱学习的)
- 项目中非技术上的困难(和甲方沟通需求,没有规范化的项目设计,需求变更太频繁等),问了我解决的方法还有以后希望怎么改进。(变相问互联网公司里面各个team以及需求方是如何合作和分工的)
- 讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)
- 三种实现上有什么区别(还好看过点源码,其实前两种是一个意思,都是通过反射的方式用aop思想实现,可以消除对spring的依赖;接口方式是直接调用afterPropertiesSet方法,效率更高点。spring加载bean时先判断接口方式,再执行配置注解方式)
- 算法题,一个先减后增的数组,查找目标值。(这里并不是查找最值,也不是剑指offer上的旋转数组,但是思想上也可以用二分的方式)
- 算法题,两个大数求和,要按高到低位的输入,实时输出结果的对应位,空间O,时间O(n),不借助工具类。(要考虑实时的进位标识,以及多个9之后的连续进位标识)
两面完了电话让去参加新锐的现场终面,很有诚意地报销了所有的花销。新锐的三面还是有难度,基本上围着算法在问。
三面 5.12
- 算法:int范围的随机数的阶乘编码实现。
(这个题如果直接按最简单的算法题肯定是不行的)1.首先考虑要用字符串做运算(因为中间数太大了,只有String能保存,当然你可以借助BigInteger或BigDecimal类去辅助实现)。
2.阶乘直接计算代价太大,循环太多,考虑设计中间缓存。(正常算复杂度太高,本身就是阶乘级的,所以正常想到用时间换空间)
3.只用空间换时间的话缓存也不能覆盖全部,如果把所有的中间值保存,空间是eb级别,不现实。(这里就要达到一个空间和时间复杂度的平衡点)
4.存部分中间值用部分空间换取时间,达到空间复杂度和时间复杂度的最优平衡。(开始说的二分做分割存储之后改为等间隔做分隔存储,间隔选取多长为好?我觉得要首先确定空间复杂度的接受极限,然后尽可能减小时间复杂度,因为空间复杂度是可以有预估值的,而时间复杂度当然我们是希望约小越好的)
(这里说一下,我并不是一开始都想到了,只是面试官一直在提示我思路,给我时间思考,没有否定过我)
- 因为头一次手写白板,返回类型有错误,面试官说你这个编译器会提示什么?
- 又问了异常体系,checked unchecked虚拟机原理怎么做。
- 解释下iaas.paas.saas和之间的关系,外呼接口和服务怎么调用的。
- 数据库主从备和读写分离原理,ibatis怎么配置。(这个只讲了数据库层面的原理,比如监听线程,主机和从机的同步方式等,但是具体代码层面的配置,由于没亲自做过,就说不太知道。)
- 算法,股票最长增长区间,优化
- 算法,最长递增子序列,一个dp数组一个max数组,最优情况
ps:这个面试官应该是面试过程中遇到最nice的一个,也是我现在的老大。其实面试除了自身的因素也有面试官的因素,一个好的面试官不会随便地否定和质疑你(当然有专门压力面的),而是可以让你在放松的环境下,挖掘你真正对于一个方面的深度和理解。最后的十几分钟他并没有问我问题,只是在跟我聊天,他跟我说不管是哪个公司,真正的发展还是跟部门的方向和氛围有关系,选择的时候不要只看公司,做的业务部门方向和leader才是该去了解和考虑的。作为应届生很多时候不那么了解,这就要靠我们(指面试官)多去了解你想发展的方向。然后聊了很多成长路径和规划的事。
真正实习到现在一个多月,深深觉得面试就是面试,很多知识和题目都是可以准备的,而工作中面对各种情况解决问题的能力和方式才是更重要的。为了面试准备了很多,工作了发现要学的东西更多,我们真的还有很长的路要走。
4、美团(123面)
1面 1hour 5.26
- java基础,从头到尾问了个遍,都是大家准备的,但是也挺深的,包括:
- hashMap,红黑树处理冲突,jdk7和jdk8有什么区别
- JUC相关的集合,ConcurrentHashMap jdk7和jdk8的区别,Collections.sort函数jdk7 和 jdk8 分别怎么实现的。(总感觉这个面试官在某段时间肯定纠结过两个版本)
- CopyOnWriteList底层是什么,适用的情况,vector的特点,实现的是List接口吗。
- 并发的问题,线程间通信三种方式
- 锁的膨胀过程,Synchronized和Lock的区别,底层的monitor实现和unsafe类的CAS函数,参数表示什么,寄存器cpu如何做)
- volatile cpu和寄存器层面是怎么实现的。
- 线程池构造函数参数,各种类型的预设池各自的特点,ForkJoinPool是怎么实现的,多线程等等问了一个遍。
- 为什么匿名内部类的变量必须用final修饰,编译器为什么要这么做,否则会出现什么问题
数据库: - 索引的分类。
- 主键索引和普通索引的区别,组合索引怎么用会失效。
- 索引的前缀匹配的原理,从B树的结构上具体分析一下。
- 聚集索引在底层怎么实现的,数据和关键字是怎么存的。
- 组合索引和唯一性索引在底层实现上的区别(这个是整个一面感觉答得不好的一个问题,不太明白面试官想问啥)
- sql的优化策略,慢查询日志怎么操作,参数含义。
- explain 每个列代表什么含义(关于优化级别 ref 和 all,什么时候应该用到index却没用到,关于extra列出现了usetempory 和 filesort分别的原因和如何着手优化等)
- show profile 怎么使用。
2面 1hour 5.27 (因为这一面问得很深,所以到现在都记得很清楚)
- 一个url到页面全过程(让我能说多详细说多详细,最好从OSI七层的每一层去扩展)
- http的请求头格式(这个真的记不太清了,只说了几个有印象的标志位)
- getpost区别,post可不可以用url的方式传参。
- 说到了url有最大长度,就问长度有限制是get的原因还是url的原因,为什么长度会有限制,是http数据包的头的字段原因还是内容字段的原因,详细说明。(在他一步步追问下答了个差不多)
- 关于幂等性的详细介绍。
- 幂等性是http层面的问题吗,还是服务器要处理和解决的内容。(就是看你对幂等性的定性是怎么理解的)
- 后台服务器对于一个请求是如何做负载均衡的,有哪些策略,会出现什么样的问题,怎么解决。(说了一致性hash算法,分布式hash的特性,具体的应用场景,又非要问我知不知道这个最早在哪个公司使用的...我说这个真不知道。好像是amazon?)
- 说说http的缺点,无状态,明文传输。
- 那https是怎么做的,如何实现的?ca认证机构。
- 然后问我https ssl tcp三者关系,其中哪些用到了对称加密,哪些用到了非对称加密,非对称加密密钥是如何实现的。(还好我项目中涉及到了一些加密)
- 关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)
- 那客户端是如何认证服务器的真实身份,详细说明一下过程,包括公钥如何申请,哪一层加密哪一层解密。
- java的优先级队列,如果让你设计一个数据结构实现优先级队列如何做?
- 用TreeMap复杂度太高,有没有更好的方法。
- hash方法,但是队列不是定长的,如果改变了大小要rehash代价太大,还有什么方法?
- 用堆实现,那每次get put复杂度是多少(lgN)
(思想就是并不一定要按优先级排队列的所有对象,复杂度太高,但每次保证能取最大的就行,剩下的顺序不用保证,用堆调整最为合适) - 在线编程题:敲一个字串匹配问题,写了常规代码。问kmp的代码思想,最后问了下正则中用的改进后的BM算法。(还有个比较新奇的Sunday算法,有兴趣的同学也可以看一下)
3面 hr
- 其实写了3面,感觉根本不算面试了,就是随便介绍了下部门,然后商量实习时间(大概补招都这样吧)。因为已经决定去滴滴新锐了,就跟她说可能暑期不能实习,然后说可以秋招再联系。
- 另外美团这家要跟师弟师妹们说一声,投简历一定还是要选事业群的,千万不要选都喜欢,否则就算过了笔试,也会像我这样等两个月大概是补招才会联系到你。