为了保证制作简历的安全性和流畅性,建议您使用Chrome浏览器进行访问
芳小菲
北京林业大学·2022届

头条商业产品运营笔面经(已offer)

春招投了头条(抖音重度患者) 返校论文翻译期间比较闲,也想见识一下宇宙条的笔试题目,没想到很幸运一路走过来~ 笔试题 行测题,数理逻辑题,还有一些图形题比较常规 大题一共有五道,大多和短视频有关 1&2.介绍自己熟悉的短视频APP,优缺点,未来的优化方向 3.电商公司希望通过广告进行宣传提高消费额,给出网络媒体的推广方案 4.假如某平台推出广告业务平台,有广告需求的企业和网红可以入驻,并且可以相互选择。阐述运营思路 别的记不太清,基本都是短视频+广告方向 4.11号HR小姐姐打了两个电话都没接到 忐忑回电话,询问面试时间4.13日在北京面试 一面 面试官自我介绍是国际化产品运营小姐姐,懵 1.先自我介绍一下 2.实习经历和工作内容,在当中承担的任务 3.介绍以前实习公司的产品,目标用户 答,产品介绍以及to b的企业和用户 4.为什么不留在以前有offer并实习这家公司? 答,工作内容和自身规划,喜欢头条 5.专业是做什么的?为什么不做专业相关的? 答,兴趣和就业趋势以及自己的大学经历 6.了解国际化的广告业务嘛? 答,不太了解,真的不了解啊衰 7.有玩ins ***嘛?了解其中的广告模式 答,玩过ins,不咋玩,后来举了黄油相机的例子强行接话题 8.谷歌的产品有用吗 答,有用谷歌邮箱 9.在玩国外的产品时候有注意到广告模式吗 答,玩国外的很少,但是强行又***讲抖音和其他产品的广告模式 10.一些专业术语ctr等 11.数理问题,三点半时针和分针的角度 答,可以画一下嘛?算的很快但是自己不相信这个角度,又算了一遍,小姐姐笑了,emmm 12.英语好吗 答,一般,平时只看看美剧,四六级也通过了但是好久不练了,可能比较生疏(我真的很诚实) 13.英语自我介绍 答,紧张的要求打草稿,但是实在没准备很慌,只说了几句(坦白从宽吧(‘-ωก̀ )) 14.面试官介绍主要工作内容,以及有什么问题 15.问英语在工作有多重要? 面试官答,英语在国际化部门是必备项,如果英语好好是加分项 一面面试官小姐姐人真的很温柔很耐心,后来说找别的同事跟我聊一聊~ 第二面 1.自我介绍+实习经历 2.对运营的认识 答,巴拉巴拉,自己的理解 3.职业规划的选择,(这个聊的多)答,按照自己的想法说就好啦! 4.问一些必备的工具会不会:Excel、sql 5.你认为在对外同广告主的交流中自己的优势 答,先说优势,再解释。以前的实习经历有涉及到哪方面的工作内容,通过这得到了别人的肯定。 6.你了解的一些广告模式 答,常规题目可百度搜索到(因为感兴趣知道一部门) 7.初期如何吸引广告主入驻平台(类似笔试题) 答,类似AARRR模型说的,但是着重说了种子用户,以及解决方案。因为了解的商业产品运营是to b的,所以特意加了解决方案这一项 8.你是兴趣导向的童鞋,对抖音感兴趣,那愿意做商业化的工作么? 答,当然愿意了,(因为之前举例都是以抖音为例子,所以面试官是否想从事商业产运)表明自己对商业产运的喜欢,通过抖音挖掘的兴趣,以及自己做出的努力 9.什么时候可以来实习(面试官以为21届) 答,没时间了,在忙毕设(真的很耿直了) 10.对头条的一些看法和公司文化的认识 答,常规,加了一些自己对公司的分析,以及通过学长了解到的头条 11.上一个实习产品你认为存在的瓶颈答,商业模式不够清晰,确实是不够清晰啦。不是我故意套商业字眼 后来面试官结束面试时说一面面试官反应我运营方面还不错,有一些自己的想法,就找了国内部门来二面~感谢! 三面 产品经理面 1.自我介绍,职业规划,专业技能 答,常规 2.数据分析,估算天天快报的dau的天花板 答,主要从历史数据演算和一些关键数据组成的公式拆解的(当时特别慌,想了一会没思路,说自己真的没什么思路,面试官说试试看,就硬着头皮说了,后来好像还不错的样子?) 3.如何展开竞品广告平台的调研?你想到的查询资料有哪些渠道? 答,伪装意向客户试用产品,渠道查询等等。说了数据,产品分析,时评等渠道。一定要说的有条理,最好采用总分原则让自己有条理 4.百万英雄答题类产品的亮点,以及你认为的目标用户是谁答,从运营亮点(突出用户获取),产品分析(从产品功能),还有盈利模式(很重要的广告啦)说的 5.你认为头条系产品流量相对于其他产品有哪些优势 答,一些自己的了解,比如用户覆盖面广啊,各个产品在垂直领悟突出啊,广告模式啊巴拉巴拉 6.突然问不是秋招就结束18届招聘了吗,懵 答,正常答自己情况 三面面试官是产品经理,较为高冷啦~ 四面 1.了解之前的tob运营的主要工作和工作流程 2.详细介绍了一下部门主要工作内容 五面 hr面 一些常规问题 1.了解到的工作内容转述一下 答,转述,还好好好听大佬讲话 2.个人的优缺点 答,正常答 3.本专业的同学去向 答,游戏公司,或者考研等 4.秋招应聘情况 答,说明自己情况 5.期待薪资别的offer情况 6.到岗时间 7.大小周工作强度接受程度 大约六点多结束后,历时不到三个小时,面试效率超级高!点赞 结束面试时,北京还下着雨拖着行李箱赶地铁回大连,怎一个惨字了得😩 面试结束完不到两周收到offer(◦˙▽˙◦) 还有许多细节问题记不太清 如有问题,可评论可私信~祝大家都好运啦~
分享
6
原味笔面经
rq cen
杭州电子科技大学·2022届

网易云音乐 三面面经 安卓开发工程师 攒人品

27号现场面的,今天才回学校。火车票和高铁票都没票了,咬牙买了张机票,比高铁票便宜。一学期的生活费没了~~~ 这次面试,我准备的是 算法,框架源码,framework源码,准备装一波逼。 emmmmm.............后来发现没用。根本就没问。简历都没怎么问,项目也没问。问的大多是基础,被虐的很惨。 也不知道网易到底看重应聘者的那些特质,很多大佬被刷,我个菜鸡竟然能过。受宠若惊。 我个人感觉效率挺快的,10点技术一面,11点技术二面。下午2点HR面。 【一面】 10:10 开始,50分钟 面试官的很严肃,微表情能吓死我(当时以为我会挂,素来听说网易有压力面的传统,不知道是不是测试,感谢一面面试官大笔一挥让我过)。一直问到不会,不给引导,也不听你引导。 安卓常用的布局,特点。LinearLayout和relaviteLayout 区别 fragment与view的区别 fragment的切换方式 fragment的生命周期 fragment的内存泄露 bitmap优化 反射的作用?编译时还是运行时? java IO 多线程 抽象类和接口的区别 hashmap的底层实现,hash算法,为什么选择hashcode 高16位于低16位异或?直到问到不会~~ synchronized 与reentrantlock 的区别? 等待可中断的内部实现(what~~~ 说了一下如果是我我该怎么实现) eventbus的内部实现 一直问到不会~~~ handler内部实现 一直问到不会~~~ 【二面】 11:10 开始,50分钟 面试官的很严肃。还是没表情,一直问到不会,不给引导,也不听你引导,也不问项目。也感谢二面面试官大笔一挥让我过 用过数据库?写了一条sql,问我怎么建索引,然后把 or改成and 问怎么修改优化?(本菜鸡不太会)没怎么用过数据库,只用原生写过一个小demo,安卓基本都orm框架了吧。然后解释了我的数据库是怎么做的。 数据库设计规范,三大范式(数据库课程逃了一学期,老师吹逼不好好讲,没办法,会写sql语句,只知道第一范式) volley源码,一直问,一直问到不会 项目的难点 MVP的设计架构,MVVM Drawable 的子类 ,方法(表示只知道 colordrawable,bitmapdrawable,然后继续追问,就说,看过安卓开发艺术探索,有一张专门讲drawable,因为用的少,没怎么看,就放过了) Drawable 和bitmap区别(又来) okhttp源码,brigeIntecptor 作用是什么?说一下 http header Http和HTTPS的区别,HTTPS工作原理 事件分发机制 自定义view 最后问我你觉得你那块需要继续深入? 问我还有有什么问题?我心里很虚,说不在问问别的吧,热修复,插件化,设计模式,虚拟机什么的,要不问问?说不问~ 心里真的很虚,没底。等了10分钟,通知过了。然后就愉快的在猪厂吃了顿饭,开心(✺ω✺)。 上次cvte HR面之后,整个人状态都不太好,缓了一周才缓过来,所以对HR面有些恐惧 感觉效率很高,下午第一批HR面试 【HR面】 14:00 开始,60分钟 HR小姐姐,很爱笑 很专业 很可爱 ~,情商很高 很多人说网易的HR是做技术转的,我感觉我的HR好像以前是做前端的~~~~ 不知道HR看没看一二面的技术评价,我感觉我一二面评价不太好。不过HR侧面放映还不错。和HR小姐姐越聊越high,感觉hr小姐姐对我很满意 (✺ω✺) 自我介绍 为什么不考研? 说说优缺点? 开始聊项目?技术,市场地位,推广,下载量,学习方式,对最新技术的关注。 为什么选择Java不选择其他的? 如何选择一份工作,你看重什么? 梦想,未来规划,为什么大学选择计算机专业? 为什么投网易云音乐?而不投游戏,雷火,考拉,邮箱等其他部门?谁让我是网易云音乐的死忠粉? 如果bat网易给你发offer 你去哪一个? 对网易云音乐的发展有什么看法,优点说了一大堆,因为我是网易云音乐的死忠粉,所以比较了解。确缺点说只有一个 ,版权,因为起步比较晚。 问 你觉得如何解决版权问题?然后又补了一句 在合法的情况下?HR小姐姐挺会开玩笑的,非常nice 我说我特别喜欢音乐 然后一直聊,扯到,他们内部在组建自己乐队,我说我特别期望加入他们的乐队。 然后聊她们的乐队,就这么愉快地结束了 希望不是HR小姐姐给我营造的幻觉 不知道空格该怎么打 总之,搞不懂网易看重面试者的那些特质。 跪求网易爸爸给我份offer,我是真的喜欢网易云音乐 ~~(✺ω✺) 死忠粉的那种 如果给我offer,我一定去
分享
15
原味笔面经
胡伟云
物流、供应链,全球化_招聘

我正在收简历,快来投递吧 职位描述 1、负责参与菜鸟各个业务相关产品的系统架构及研发; 2、协助产品梳理业务需求,产出业务系统架构设计方案; 3、独立完成项目的系统分析、设计,并主导完成详细设计和编码的任务,确保项目的进度和质量; 4、主动关注并学习新技术,并能够在实践中应用,帮助建设团队技术氛围。 任职要求: 1、三年及以上Java开发经验,编程基础扎实,熟悉io、多线程、集合等基础框架; 2、熟悉Web开发,熟练使用Spring等主流的开发框架; 3、熟悉Linux下的常用命令,熟练使用MySQL、Oracle等常用关系型数据库,熟悉主流的key-value存储系统; 4、熟悉常用设计模式,有大型分布式、高并发、高负载、高可用性系统设计开发经验; 5、善于思考,能独立分析和解决问题,责任心强,具备良好的团队合作精神和抗压能力,要有创业的激情和坚定的信念 职位关键词:JavaSQLSpringMySQLOracleLinux 工作地点:杭州
分享
评论
我这里招人
新麓酒业
湖南大学·2022届

惠氏综合管培生面经

惠氏是被雀巢收购的母婴类品牌,总部在上海。招聘按照地域分为中区、北区、东区等等,先是各个大区进行面试,然后会有上海总部的面试。这个管培生项目似乎偏销售一些,因为销售是一定会轮到的岗位,不过会在除了销售之外的一些部门轮岗,包括电商、市场等。 【电面】 很常规的一些问题,自我介绍、实习经历,对于快速消费品行业的理解,为什么之前经历偏互联网,现在投递了快消。之前投递的公司,哪些拿到offer,哪些被拒了,有没有反思被拒的原因之类的。比较中规中矩的HR面试吧。没有英文面试和时间限制。HR姐姐很nice,会很耐心听你讲完。因为惠氏是跟雀巢一起进行招聘的,所以其实当时投递的时候对他们的业务并不是很了解,HR姐姐仿佛早就知道了这点,主动介绍了一下面试的流程和管培的培养方案。 【初面】 各个大区会先进行各自的面试。先是HR和地区总监介绍企业文化和业务,以及管培生的项目,我那组是6个人,5分钟了解对方,然后向在场的人介绍你左右的人。 接下来是然后是辩论,三个人一组。20分钟左右,题目和快消品无关,是很传统的辩论。不过后来听其他大区的小伙伴说他们的题目还是有一点专业性和岗位相关度的。 再来是提问环节。面试官会cue在场的人提几个问题。类似于谈谈对销售的看法,销售和市场的差别,你觉得会在工作中遇到什么问题,销售中老板和客户的需求发生了冲突,你遵从哪方?大概几天之后就有通知进入下一轮面试。 【终面】 不得不说他们的面试体验还是很好的。给报销了往返机票,还给定了酒店的自助餐。期间也有茶歇和零食。十分感人。终面包括三个环节——英文图片描述、辩论和case。二十个人分为两大组。自我介绍部分需要每个人抽取一图片,上面有一幅画,用英文来阐释这幅画展示的道理。辩论的题目和快消无关,就是日常的题目,正反方都能说上话。每组选几个代表进行参与,其他人则是在台下贡献点子。然后是case study。2页纸,不长,大概就是营养品的销售情况,然后指定下一季度的销售方案。快消的案例虽然经常变,但基本就是围绕推销商品之类。最后选出一个代表来pre。完了面试官会有点评和反馈,挺犀利的。一针见血指出我们讨论过程中没有考虑到的地方。LZ的感受是一定要争取发言的机会。因为参加的人数众多,即使在台下贡献了再多点子,面试官在那么乱的场面中也不会注意到。最后,他们会敲定一些人进行单独的面试,没有被敲定的人有两种可能,直接通过,或者直接淘汰。 总体感觉如下: 他们对校招的招聘和培养还是比较用心的,不过宣传上似乎还比较低调。面试体验很不错,HR前前后后都沟通得很到位。不过其实并不是那么像典型的快消面试。所以没有这方面背景的同学大可不必担心,还是更多看重潜力,例如逻辑思维、表达和沟通能力等。
分享
5
原味笔面经
鹿港小镇°
华北电力大学·2022届

2020汇丰 host supernova网申+SHL+电面

2019年秋招的网申面试经验分享给大家~祝大家早日拿到offer~ 因为graduate programme,jsa挂了,汇丰后来又给我推了host的项目,有关运营、技术后台方面的管培生项目。 11.8 我就麻利的网申了,填了一些资料,没有申请中国学生计划那么详细,最后会要求做一个性格测试,才能提交申请 11.15收到SHL测试链接,赶紧看了bbs上其他大佬们的经验,去买了几套题目,看了一天,第二天再做的,发现80%原题命中。感觉自己又稳了~ 11.19汇丰HR打电话问我有时间电话面试吗,并没有提前通知,所以我慌了,就回复在上课,可以约在第二天下午吗。HR说会根据面试安排再定时间,然后就挂了电话。我就开始准备问题,发现bbs真的太有用了,大家提到的问题真的,都命中了。 11.28 是的,那天之后hr没有打电话给我,我以为自己凉了。结果吃饭的时候,突然来了一个上海的电话。一猜就是汇丰,hr特别温柔地问了一些问题。比如,你收到offer了嘛,那你收到offer为什么还考虑别的机会呢。我当时直接说,因为希望有更好的机会,hr都被我逗笑了。我那个offer是三年免面试直通的那种,所以我不去,我也不知道职位是啥,hr问我啥职位,我又懵了。反正最后约了一个时间,在第二下午的3:30。 11.29 往往没有那么的准时,吓得我以为又要被放鸽子了。 晚了几分钟,上海的电话终于来了。我找了一个安静的角落,开始了电话面试。透露一下问题, 英文部分: 1、自我介绍 2、长短期计划 3、对项目的了解 其实还有一个问题,但我听力一项不太好,就pradon了两次,但还是没理解,哭哭,hr就转中文了 中文部分: 1、多项工作的协调举例子 2、你怎么去说服stakeholders 3、你参加过什么项目 4、因为我说的比赛,刚好又是队长,她就问我leader的品质 5、比赛中遇到的困难,我怎么去解决的 主体部分问完了,她问我对host还有什么过多的了解,最后让我向她提问。我准备问题,就匆匆结束了。 总体来说,hr小姐姐都很温柔,态度特别好,所以想不到也别紧张,她会给你思考的时间。我回答的感觉,很一般。但也没抱着一定要拿offer的决心,想到电面通过的话,要自费去上海ac面,我就佛了。 希望大家加油呀!都能拿到心仪的offer~
分享
评论
原味笔面经
海盐不喝汽水
南昌大学·2022届

关于Spring Cloud

Spring Cloud Spring Cloud 是什么 集成了多个框架工具,来解决微服务终于到的各种问题: 远程调用(RPC) 负载均衡 重试(容错) 降级 熔断 监控 配置中心 Spring Cloud 是一个框架集,微服务全家桶 Spring Cloud 不是什么 不是一个独立框架 Spring Cloud 和 Dubbo 区别 Dubbo 只解决远程调用,不能解决其他问题 如果遇到其他问题,需要自己研发,或自己集成其他工具。 Spring Cloud 是微服务全家桶,结合Spring Boot来实现“开箱即用” eureka Spring Cloud 支持多款注册中心工具:eureka,zookeeper,consul....... eureka运行机制: 注册 应用启动时,会连接注册中心进行注册。 如果无法连接注册中心,它会一次一次的反复进行注册,直到成功为止。 拉取 每个服务都会从注册中心拉取注册表,每30秒会重新拉取一次注册表进行更新。 心跳 客户端会每30秒向 eureka 注册中心发送一次心跳数据,eureka 连续3次收不到心跳,认为服务已经死掉,会从注册表删除服务。 自我保护模式 是一种特殊情况 由于网络不稳定,造成 85%以上的服务器出现心跳异常,这时会进入自我保护模式,在保护模式下,所有服务都不删除,直到网络恢复,会自动退出自我保护模式。 eureka 和 zookeeper 区别 eureka 强调 AP - 可用性、分区容错性 集群 - 对等结构 zookeeper 强调 CP - 一致性、分区容错性 集群 - 主从结构 RestTemplate Spring Cloud 使用的一个远程调用工具 (服务之间相互调用) RestTemplate 是Springboot提供的一个远程调用工具 getForObject("url", 转换类型, 提交的参数) postForObject("url", 协议体数据, 转换类型) Ribbon Ribbon 的作用,解决的问题: 负载均衡(微服务系统必须功能) 访问压力可以分散到多态服务器 重试(不是必须功能) 当第一次请求失败或等待超时,可以自动发起重试请求 Ribbon 负载均衡 ribbon依赖(在 eureka client 中已经包含) 添加 @LoadBalanced注解,用Ribbon封装 RestTemplate 对象,对 RestTemplate功能进行增强 Ribbon 重试 容错 当调用后台服务失败,可以自动重试,如果重试成功,可以向客户端正常返回结果。 添加Ribbon重试: 添加 pring-retry 依赖 设置重试参数: MaxAutoRetries - 单台服务器的重试次数 MaxAutoRetriesNextServer - 更换服务器的次数 OkToRetryOnAllOperations - 是否对所有类型请求都重试,默认只对 get 重试,如果要对所有请求重试设置成 true 下面两个超时设置不能在 yml 中配置,需要在 java 代码中设置 connectTimeout - 建立连接超时时间 readTimeout - 已建立连接并发送了请求,等待响应的超时时间 Hyxtrix 容错工具 Hystrix提供的容错功能: 降级 熔断 降级 当调用后台服务失败,或超时,可以向客户端返回降级结果 。 快速失败: 客户端不必长时间阻塞等待后台服务结果,超时后可以快速获得反馈。 防止雪崩、防止错误传播 熔断 熔断就像家里的电箱,有一个总闸,如果访问量过大(过热),触发熔断,家里的电路会被断开。 当系统访问量过大,出现大量的失败情况时,会触发熔断,断路器打开后,所有的请求直接执行降级代码返回降级结果。 触发熔断的条件: 10秒内20次请求(必须首先满足) 50%失败,执行了降级代码 添加 Hystrix 降级 hystrix 依赖 添加主程序注解@EnalbleCircuitBreaker,启用 hystrix 断路器,触发断路器自动配置 添加降级代码 复制代码1234@HystrixCommnad(fallbackMethod="降级方法")public void a() {    restTemplate.getForObject("http://.....");} hystrix 的超时 默认超时时长是1秒 hystrix dashboard hystrix仪表盘,对hystrix出现错误的情况进行监控 actuator Springboot 提供的一个项目监控工具,可以监控项目的各种运行数据,hystrx利用actuator,可以添加hystrix的监控数据。 添加 actuator: actuator依赖 暴露监控数据: 在.yml配置文件中输入即可知晓 复制代码1234567m.e.w.e.i="*"  # 暴露所有的监控数据 m.e.w.e.i=health  # 暴露健康状态数据 m.e.w.e.i=health,beans,env,hystrix.stream # 暴露多种监控数据 m.e.w.e.i=hystrix.stream 搭建仪表盘项目 hystrix仪表盘是一个完全独立的项目,启动后,需要在它的界面上指定监控数据的路径。 新建 hystrix-dashboard 项目 添加 hystrix dashboard 依赖 yml 配置选择端口 4001 主程序添加注解,启用 hystrix dashboard:@EnableHystrixDashboard Feign 声明式客户端 只需要定义一个抽象的接口,就可以通过接口调用远程服务,不需要写具体调用代码。 例如调用后台商品服务,接口可以这样定义: 复制代码12345@FeignClient(name="item-service")public interface ItemFeignClient {    @GetMapping("/{orderId}")    JsonResult<List<Item>> getItems(@PathVarible String orderId);} 通过注解,配置以下三点: 服务id - 确定调用哪个远程服务 路径 - 调用一个服务的哪个路径 参数 - 向这个路径提交什么参数数据 集成 Ribbon Feign集成了Ribbon,提供了Ribbon的默认配置。 默认已经启用了负载均衡和重试,0配置就可以使用Ribbon。 重试的默认配置: MaxAutoRetries: 0 MaxAutoRetriesNextServer: 1 ReadTimeout: 1000 集成 Hystrix Feign可以集成Hystrix,默认不启用Hystrix,Feign不推荐启用Hystrix(后面再进行分析)。 启用Hystrix,添加基础配置: 添加 Hystrix 完整依赖 yml 配置在Feign中启用hystrix:feign.hystrix.enabled=true 主程序添加 @EntalbeCircuitBreaker 添加降级代码 添加一个单独的降级类,需要实现声明式客户端接口 复制代码123<a href="/profile/664319079" data-card-uid="664319079" class="js-nc-card" target="_blank" from-niu="default">@Component public class ItemFeignClientFB implements ItemFeignClient {    实现降级方法,返回降级响应}</a> 在接口上,还需要指定降级类: 复制代码1234@FeignClient(name="item-service",fallback=降级类)interface ItemFeignClient {     } 添加Hystrix监控 actuator依赖 配置暴露 hystrix.stream 监控端点 复制代码1m.e.w.e.i=hystrix.stream 访问 http://localhost:3001/actuator/hystrix.stream 访问仪表盘,访问上面的监控数据
分享
1
先马后看
wltc
东北林业大学·2022届

许愿面委通过

许愿许愿许愿!
分享
2
超好运许愿池
暮草兮
中国人民大学·2022届

分享一下字节春招和华为春招,希望我失败经验能为大家铺铺路

经常通过刷应届生来积攒经验,和为面试做准备,第一次在这里给大家做分享。虽然我没有成功拿下两个公司的offer,但是我还是想把我的经验分享出来,进而帮助更多的同学。也希望更多的同学可以在春招中拿到理想offer。    1. 字节跳动---销售管培生。     从一月疫情开始,我就没少投递,也接到了很多电话,虽然很多都只是简单的与公司之间相互了解,但确实为我后期的面试打下了一定的基础。    3月13号,我进行了简历的投递。22号做了题,当时做的时候由于有点事就很快的做完了,没有太当回事,24号收到了面试邀请。    在面试前开了一次空宣,让过了笔试的大家在一起看了字节的空宣,必须说字节还是很好的公司。在空宣中,hr说投递的简历超过1w5人,最后我看来参加空宣的大概200人吧,所以竞争还是很激烈的。    第一次面试是群面,给了一段材料就是把3000w和7000w分给不同的部门的题。我们小组10个人但是不知道什么原因只来了8个,这是我第一次进行无领导小组讨论,又是线上的模式。其实很紧张,在此之前在牛客和知乎上了看了一些攻略分享,但是真正开始的时候还是很紧张,小组成员都比较nice,但是实力也很强都是有着各种名企实习经验的,所以我觉得简历上有相关的实习或者知名企业的经历还是蛮重要的。我第一次进行这种小组讨论,主要还是以为大家提供idea和抓住一些题目的要求为主吧。对了,我记得当时好像有组员迟到了,结果面试官问问题的时候就问他为什么迟到了?还是比较尴尬的。所以建议大家都能按要求参加面试吧,毕竟很多时候面试官就在那里开着视频等你加入。    第二面是hr面,当时我们组里还剩下7个人(应该是上海地区),我们前6个都是一个男面试官,他问了很多简历的上的内容,比如说说实习的经历,学生会的经历等,还问了对于字节,对于岗位的看法,最后我问了他对于这个岗位希望招的什么样的应聘者?他让我先谈了谈,他的回答中把这个岗位一分为二,一个是销售,一个是管培生。所以,如果大家对这个岗位感兴趣不妨这个看一下。    4月2得到消息我没有通过,一个有很多快消实习经历的同学通过了,所以这也侧面体现了实习经验对于找工作的重要性    2. 华为---消费者管培生    2月底投递的简历,据说很多华为是从秋招没有审查的简历开始进行审查面试的,所以其实投递时间有点晚了    3月13号下午,接到了华为电话,当时面试官简单的了解了一下我的情况,然后说会安排一个面试环节。    3月19号下午,进行了一面专业面,华为的一面时间有些长大概用了50分钟。我的面试官是一男一女,以男面试官为主。他们主要就学业的一些问题,比如研究生的论文,市场营销的4p,4c ,SWOT等方面进行了考察,也问了关于疫情的看法,还有关于实习方面和学生会方面。女面试主要问了一下关于市场营销中to C的经验看法。总体来说问的很细,很深。这也是我春招面试以来觉得最专业的面试过程了,聊天过程也是比较愉悦的。    4月3号,华为主管面。在主管推迟了很多次定好的时间以后,终于敲定了时间,但是最后还是临时被通知提前时间。这个面试我始终没有看到面试官的脸,他将屏幕推向了天花板,也有来回走动,推来窗帘等。问的问题也是很刁钻。各种质疑面试者。    1.年龄大了或者年龄小了,然后就是对每一年的经历进行回顾    2.质疑学校,你的学校好像不如英美名校啊    3.质疑能力,对于实习经历和校园经历的质疑    4.质疑出国英语能力,让我们说一段英语(我是比较反感的,有点像是尴尬的让一段表演节目)    5.让我出题考察一下自己    6.没有给我反问的机会,直接让我下线了    总体来说,就是大家常说的打击型面试吧,后来与其他面试者进行交流发现他们的面试过程也不尽相同。都是质疑我们的各种能力和经历。    大概1小时之内就可以在官网上看到结果,最后我们四个都没有通过,大家建了群也进行了讨论,有说可能缩招了,也有说华为春招结束了的。    我觉得大家还是要做好各种准备吧,当时我并没有想到会是这样的面试形式,所以,当面临时还是显得有些准备不足。    提示:    1.简历最好有几段相关实习或者知名大企业实习经历    2.多投些简历,有些公司可能你不想去,但是面试或者电话的经历都能对未来面试有所帮助    3.做好各种准备,不仅仅是面试会问的题目还有心理准备,做好打遭遇战的准备    4.了解公司的信息详细一些,不仅仅是公司的简介,还有公司相关的大新闻    5. 多跟一起面试的大家交流一下,每次面试多总结    我总是挂到最后这一俩轮上,所以进一步的内容也不能分享了。希望大家以我的失败经历为教训拿下理想offer    大家加油 奥利给!
分享
3
先马后看
丿聆听着幸福丶
同济大学·2022届

欧莱雅市场管培生凉经

【网申】 欧家的网申在秋招中就是一股清流,不用传简历,回答三个问题即可。记不太清具体问题,大致如下:一个体现自己创意的例子;对于新零售的理解;一个比较有挑战的例子。没有行测推理,没有性格测试。应该是AI来判断你的回答是否与你申请的岗位匹配。需要逻辑清晰,应该也需要点到一些关键词吧。 【上传视频】 如果通过了网申,接下来就是30s短视频环节。是个比较general的问题,用英语回答,发挥的空间很大,每个人都有话说,不过说好并不容易。30s的时间真的很短,需要较好的逻辑和语言表达能力,写好稿子,删删减减,筛选了一些比较核心的内容。不限制录制次数,可以录到自己满意为止再上传。这个筛选的标准也很迷了,有人说是看idea,有人说是看脸,有人说是看英语。 【Skype面试】 通过视频筛选后会进入到HR面试环节,时间大致是20分钟左右。也很仓促。问的问题包括:自我介绍;本身是基础学科,为什么想要来做MKT。过往的实习经历,有什么有成就感的事情。最喜欢哪个欧家品牌,你如果能为它做推广,会怎么做?针对target的人群,会选择哪个KOL,这个之前其实没有想的那么细,答的不是很好。最失败的事情。 【准备过程】 年报:后来在看别人的面经时候,发现人家在准备欧家的面试的时,看了欧莱过往3年的年报,最近一年的甚至看了季度的。从事业部到品牌,从社会责任一直到创新壮举,年报上都写的很清楚。后来的有心人可以参考一下。 欧气商学院:另一个免费且干货资源就是欧气商学院。他们校招的公众号上就有。各个领域的欧家的大佬在十几分钟的课程里面用最浓缩的语言介绍了欧莱雅的典型案例,包括了市场营销、电商、销售等等,可以学到很多东西,而且是每年都会更新的,不愧是一个崇尚创新的公司。我当时没有看完,看了其中的几期,印象比较深的有迪丽热巴代言7天安瓶、理肤泉的线下喷雾售卖机等等案例,学会了新品上市的营销方案该如何做,以及欧家是如何做新零售,打通线上线下的,也在面试中和面试官分享了看法。 官网和公众号:感觉欧莱雅是一个你需要对他们产品了如指掌的公司。最好是忠实用户,用过他们的产品,没用过也要了解一下,看看天猫双十一双十二的活动啊之类的。而且感觉如果自己本身不是对这些东西很感冒,即便通过面试进去了也会很痛苦吧。 【感受】 回答要有逻辑,并且往JD和企业文化上靠。比如说欧家很注重创新,在举有成就感的例子时就最好往这上头靠一靠。 答题要有框架。比如能为产品做什么推广, 就算一点都不了解这个产品,推广的思路和框架是一致的,所以在这基础上丰满细节就好了。当然还是最好多看看他们的产品,至少每个事业部选一个比较了解的。
分享
评论
原味笔面经
_角_
谢菲尔德大学·2022届

玛氏综合管培生群面面经

快消的面经不多,月初的时候参加了MARS的群面,分享一下过程~ 【形式流程】:分城市进行,一天大概有10组的样子。提前到了之后桌上摆满了各种玛氏的零食,巧克力MM豆士力架啥的,可以说是很贴心了。交完简历之后做一下名牌,然后就被带到会议室,一组大概1个小时多一点。岗位不同,case形式也不同,大家放轻松,认真听规则,不清楚及时向面试官确认就好。 【面试过程】:一个屋子里大约有4个面试官,在不同角落观察大家行为。有来自HR团队的,也有来自业务部门的。都是工作了10年以上非常资深的面试官。至于题目,据说往年玛氏的题目是每个人拿到的材料不一样,大家需要交换各自手中的信息,才能拼凑出一个完整的case。往年的题目大致类似于:要筹办一个活动,每个人可能是不同的角色,大家需要分工合作策划出一个最优的方案。今年稍微有些不同,case阅读不难,题目也不难。题目大概一共就只有两页纸。也没有复杂的计算。但提升分析表格数据的能力很重要。要能在读完后找出关键可用信息,同时根据数据能归纳出结论。不会被一些抢话的伙伴压制住,因为大家的思路和语速都非常快。另外,最好之前熟悉一些mkt的分析框架,有一些通用的模板,建议梳理一套自己的marketing思维逻辑,会更有底气。 【候场】:候场的时候大家一般都会闲扯,比如最近在面试哪些公司,面过的哪些公司,自己的专业和擅长的领域是什么。个人觉得这个环节很有帮助,一来可以打听到最近其他公司的面试情况,比如题目和招聘进度,二来可以熟悉队友的风格,以便在后续的环节采取相应的对策。虽然即便大家熟悉之后在正式的面试中也不免有火药味,但还是会更团结一些,像一个团队在推动一个项目。 【时间把控】:大概有几个阶段——阅读材料,8个人分为2个4人小组讨论,然后3分钟的2个小组各自总结。提出新的情景和问题,8个人合并讨论,重新出一个补充方案,然后选一个人汇报。最后面试官问大家是否有对于今天的面试表现有反思想要发言的,有没有可能是再来一遍会做的更好的。楼主一开始在讨论的时候提出说我们分配下时间吧,5min读材料各自思考,15min讨论,最后3min总结之类的,但是最后讨论起来就忘了这回事。如果在场面混乱的时候,能抓住某个时间点,提醒一下组员进度,从框架上进行把握,提醒大家不要过于分散或拘泥于某个细节,就很好了。 个人建议,不要一开始把自己局限于去做timer,而是要提升自己快速应变的能力,推动讨论和提出新想法的同时,顾及时间的意识。比如半个小时的讨论,你大概能清楚,每10分钟需要达到什么进展。这是LZ做的不好地方,提醒后来的小伙伴注意。 总体来说玛氏的氛围还比较友好,但总感觉我们组讨论的方案让面试官不是很满意,随缘,希望能帮助到大家。
分享
2
原味笔面经
﹃夜\凄凉
江南大学·2022届

面试高级算法梳理笔记

1.1 说明 本篇为《挑战程序设计竞赛(第2版)》读书笔记系列,旨在: 梳理算法逻辑 探索优化思路 深入代码细节 1.2 目录 原文首发于个人博客Jennica.Space,按算法难度划分为初中高三个级别,详细目录及链接如下: 初级篇 穷竭搜索 贪心 动态规划 数据结构 图论 数论 中级篇 二分搜索 常用技巧 数据结构(二) 动态规划(二) 网络流 计算几何 高级篇 数论(二) 博弈论 图论(二) 常用技巧(二) 智慧搜索 分治 字符串 1.3 题解 配套习题及详解同步发布在GitHub仓库acm-challenge-workbook,持续更新。预计在2017年3月完成,欢迎watch。习题难度从国内机试、国外IT名企面试到ACM地区赛不等,吃透算法习题册,应聘足以。 1.4 题库 Google Code Jam(GCJ) Peking University Online Judge(POJ) CodeForces(CF) LeetCode(LC) Aizu Online Judge(AOJ) 2.1 穷竭搜索 2.1.1 核心思想 深度优先搜索(DFS):从某个状态开始,不断转移,直至无法转移,回退到前一步,再继续转移到其他状态,直到找到最终解。通常采用递归函数或者栈(Stack)来实现。 宽度优先搜索(BFS):从初始状态开始,总是先搜索至距离初始状态近的状态。每个状态都只经过一次,因此复杂度为O(状态数*转移方式数)。通常采用循环或队列(Queue)实现。 2.1.2 优化细节 特殊状态枚举:可行解空间多数可采用DFS,但当其比较特殊时,可简短地实现。 全排列使用STL中的next_permutation 组合或子集使用位运算 剪枝:明确知道从当前状态无论如何转移都不会存在解的情况下,不再继续搜索而是直接跳过。 栈内存与堆内存: main函数中的局部变量存储在栈内存中,统一分配后不再扩大,影响栈深度,与机器设置有关。通常,C++中执行上万次递归是可行的。 new或malloc的分配的是堆内存,全局变量存储在堆内存中,使用全局变量代替局部变量可减少栈溢出的风险。 加深深度优先搜索(IDDFS):初始的DFS递归深度限制为1,在找到解之前不断增加递归深度。 2.2 贪心 2.2.1 核心思想 贪心算法:遵循某种规律,不断贪心选取当前最优策略。 贪心证明: 与其它选择方案相比,该算法并不会得到更差的解(归纳法) 不存在其他的解决方案(反证法) 2.3 动态规划 2.3.1 核心思想 动态规划(DP):通过定义某种最优子状态,进行状态间转移达到最终解。 记忆化搜索:将重复状态通过标记降低复杂度。 多种形式的DP:搜索的记忆化或利用递推关系的DP,或从状态转移考虑的DP。状态定义和循环顺序都会影响复杂度。 2.3.2 优化细节 使用memset初始化 重复循环数组 dp仅bool是一种浪费 根据规模改变DP对象 2.3.3 经典模型 背包问题(01背包,完全背包) 最长子序列(LCS,LIS) 划分数(第二类Stirling数,Bell数) 2.4 数据结构 2.4.1 核心思想 优先队列:包含两类操作插入和取值。插入一个数值,获取最小值并删除。堆可高效实现优先队列。 堆:儿子的值一定不小于父亲的值的一种二叉树。插入时先在堆末插入,不断上移直至无大小颠倒。取值时,删除最小值,将堆末节点复制到根,不断下移直至无大小颠倒。插入和取值复杂度都为O(logn)。 二叉搜索树:对所有节点都满足,左子树上的所有节点比自己小,右子树上的所有节点比自己大。插入与查询类似二分,删除时将删除节点左子树最大值或右子树(无左子树时)上移,每种操作复杂度都为O(logn)。 并查集:一种管理元素分组情况的数据结构。可以查询两个元素是否同组,可以合并两组元素,但不能进行分割操作。一次操作复杂度为阿克曼函数反函数a(n),比O(logn)快。 2.4.2 优化细节 平衡二叉树(AVL):当左右子树深度差超过1时,将更深的子树旋转上移,达到整棵树的平衡,避免二查搜索树退化后复杂度升至O(n)。 路径压缩:并查集向上的递归操作中,沿途所有节点一旦向上走到一次根节点,就把其到父亲的边直接连向根。 并查集的同组:广义可表示组内所有元素代表的情况同时发生或不发生。 STL标准库: 优先队列:priority_queue(默认根为最大值) 二查搜索树:set(集合)、map(键和值对应)、multiset和multimap(可存放重复键值) 2.5 图论 2.5.1 核心思想 图:顶点集合为V、边集为E的图记作G=(V,E),从u到v的边记作e=(u,v)。根据边是否有向分为有向图和无向图,根据是否有环分为有环图和无环图。图可由邻接表和邻接矩阵两种方式表示。 Bellman-Ford算法(单源最短路):记录起点到每个点i的最短距离d[i],用所有的边条件持续更新d[i],直到每个d[i]都已经为最小无法更新。图可包含负权边,包含负环的判断方法为将所有d[i]初始化为0,第V次d[i]是否仍存在更新。复杂度为O(EV)。 Dijkstra算法(单源最短路):从起点出发出发,更新s所有可到达的边j,若d[j]有更新,则加入最小堆,以便下次找到剩余集合中d[i]最小的点i,再从i出发BFS,直到到达终点t。不能处理包含负权边的图。复杂度为O(ElogV)。 Floyd-Warshall算法(多源最短路):定义从i到j且经过k的最短路为d[i][j]用d[i][k]+d[k][j]来更新,三重循环直接得到任意两点间的最短路。图可包含负权边,包含负环的判断方法为是否存在顶点i使d[i][i]为负。复杂度O(V^3)。 Prim算法(最小生成树):假设V的子集X已经构造了部分最小生成树,那么接下来就是选取从X到X的补集中权值最小的边加入。可使用最小堆维护待选的边,复杂度为O(ElogV)。 Kruskal算法(最小生成树):将所有边升序排列,依次取出每条最小的边,若该边的两个端点不在相同并查集内,则将该边加入最小生成树,并将两点用并查集连接。耗时最多的操作为边的排序,复杂度O(ElogE)。 2.5.2 优化细节 最短路本质是动态规划,最小生成树本质是贪心。 Bellman-Ford算法和Floyd-Warshall算法可处理包含负权边的图,并结合各自特性判断是否存在负环。 差分约束:将不等式组转化为包含负权边的单源最短路问题,一般采用Bellman-Ford方法解决。若d[i]+x>=d[j],则创建有向边e(i,j)=x。从起点s到终点t的最短路d[t]为s和t允许的最大差。若存在负环,则不等式组无解;若d[t]=INF,则s和t相差可任意。 2.6 数论 2.6.1 核心思想 辗转相除算法(最小公约数):gcd(a,b)=gcd(b,a%b),循环至b为0,此时得到最小公约数为a。 扩展欧几里德算法(解二元一次方程):求解ax+by=gcd(a,b),类似辗转相除法。求extgcd(a,b,&x,&y)时,递归求得d=extgcd(b,a%b,y,x)的解存入y和x。则ax+by=gcd(a,b)的解为x和y-(a/b)*x。 素数筛法:通过已求得的素数,将所求范围内所有该素数的倍数都标记为合数。依序遍历空间,未被筛掉的即为新的素数。复杂度O(nloglogn),可看作线性的。 反复平方法(快速幂):求x的n次幂,可二分递归求x的n/2次幂,即x^n=(x^(n/2))^2 * x^(n&1)。复杂度为O(logn)。 2.6.2 优化细节 ax+by=gcd(a,b)的解大小:x的绝对值不大于b,y的绝对值不大于a。若要求得满足某个范围的解,可通过参数k调节,x+=k(b/d)、y-=k(a/d)为原方程的解簇。 线性素数筛法:遍历解空间,无论当前数是否为素数,将已经求得得素数集合中的数乘以它得到合数标记筛去。并且若该数为合数,它乘以的素数为它的因子,则对该数不再继续循环已有的素数集合。上述可保证,每个合数都只通过乘以它最小的因子得到,即复杂度为线性。注意,该方法使得已有的素数集合中的组合并不一定被立即筛去,在以后遍历到特定合数时才会被标记。 模运算:用64位处理对32数的模,避免发生溢出。模运算对加减乘可以直接应用,但对同模的两边做除法时,若原始ac=bc(mod m),则a-b=m*k/c,则a=b(mod m/gcd(m,c))。 3.1 二分搜索 3.1.1 核心思想 二分搜索:对于某个有序区间,每次查找区间中点是否满足条件,并以此为依据,决定递归查询左半区间或右半区间。反复循环上述折半过程,直到条件或精度被满足。 3.1.2 优化细节 STL:以函数lower_bound()和up_bound()的形式实现了二分搜索 结束判定:1次循环可将区间减半,循环100次可达到精度10^-30 。还可通过区间长度与EPS判断,但要避免EPS太小因浮点数精度问题造成的死循环。 3.1.3 经典模型 有序数组中查找某值 判断一个假定解是否可行 最大化最小值 最大化平均值 3.2 常用技巧 3.2.1 核心思想 尺取法:又称两点法,通过在区间上标记并顺序移动头尾两点,将复杂度降为线性。 反转(开关问题):若为初末态确定,则可通过贪心求得最少步骤。高斯消元法也可求得一组可行解,且自由变元有限,所以也可以求得最优解。 集合的整数表示:通过二进制将集合状态映射至整数。涉及到的位运算包括:与、或、非(取反)、异或、取负(取反+1)、逻辑左移右移、交、并。遍历所有子集或找到所有大小为k的子集,都可以通过位运算操作求得字典序升序的二进制码。 折半枚举(双向搜索):当全局枚举复杂度太大时,可将条目折半,分别枚举所有情况。复杂度降为原本平方根。 坐标离散化:将数列排序并去重,将原数列离散化映射至有限可控的区间。 3.3 数据结构(二) 3.3.1 核心思想 线段树:是一棵完美二叉树,树上的每个节点表示一个区间。根节点维护整个区间,其他每个节点维护父节点二分后的某个区间。查询和更新复杂度都是O(logn)。 树状数组(BIT):将线段树每个节点的右儿子去掉,用每个节点表示区间的右边界代表该节点的索引,这样就可以通过一个线性数组维护所有必要的区间。索引的二进制最低位的1表示区间长度,值为x&-x。求和和更新复杂度都是O(logn)。 平方分割:将n个元素装入√n个桶内,每个桶√n个元素的分桶法,每个桶分别维护自己内部的信息。对区间的复杂度操作可降至O(√n)。 3.3.2 优化细节 懒惰标记:线段树可以通过在父节点上维护一个懒惰标记,来表示整棵子树的状态。在自顶向下的查询操作中,在递归该父节点时,将标记下移至两个儿子节点,并且更新父节点真正维护的直接变量。 稀疏表:与线段树类似的是其区间长度都是2的整数次幂,但每个长度层级的区间左端点都连续。进行RMQ查询时,只需要找到不大于区间的最大2的整数幂,根据这个长度,待求解的左端点及右端点减去长度即为该行在稀疏表内的列的值。预处理时时间和空间复杂度都高达O(nlogn),但结合二分查找的单次查询比线段树快,只需要O(loglogn)。 维护多项式:如果需要维护的变量可以表示为索引i的n次多项式,则可以用n+1个树状数组来维护。或者,线段树的每个节点维护n+1个值。 区域树:线段树的每个节点可以维护一个数组或维护一棵线段树,适合对矩形的区域进行处理。并且,和树状数组一样,多重线段树嵌套可以实现高维度的区域树。 3.4 动态规划(二) 3.4.1 核心思想 状态压缩DP:通常结合进制数的特点,将每个状态压缩表示为整数。复杂特殊状态的转移就可以表示为整数下标的等式。 矩阵快速幂:若动态规划的递推关系式可以表示为多元一次多项式,则可以通过某常系数矩阵的幂与初始向量的乘积求得最后的结果向量。其中求幂可以结合基于二分思想的快速幂算法。用n表示幂次数,m表示向量规模,则复杂度为O(m^3logn)。 3.4.2 优化细节 结合数据结构:某些时候涉及到更新和查询操作时,如果利用线段树等高级数据结构处理,可以使得转移方程中线性的遍历转化为对数级别的查询。 3.5 网络流 3.5.1 核心思想 最大流:增加反向补偿边,在残流网络上不断寻找增广路。常用朴素寻找增广路的Ford-Fulkerson算法,复杂度为O(FE)。通过最短路算法预处理为分层图的Dinic算法,复杂度为O(EV^2)。 最小割:将割中的边全部删去后,源点无通路可再到达汇点。最小割是最大流的强对偶问题,数值相等。 二分图匹配:匈牙利算法递归每个顶点,每次递归,将已有匹配删除看能否得到更优解。 一般图匹配:常用Edmonds算法,较为复杂,尽量转化为二分图求解。 最小费用流:在残流网络上扩展最短增广路时,使用边的花费作为边权寻找最短路。f(e)表示e中的流量,h(v)表示势(残流网络中s到v的最短路),d(e)表示考虑势后e的长度。复杂度为O(FElogV)或O(FV^2)。或者通过不断消去负圈得到最小费用流。 3.5.2 优化细节 最大流变体: 多个源点汇点:构造超级源点S和汇点T,用S连至多个源点,所有汇点连至T。 无向图:构造正反方向的两条边,容量与无向边相同。 顶点也有流量限制:将每点拆为入点和出点,入点至出点连边。 最小流量限制:构造超级源S汇T,对于每条边构造逆向的容量为下限的满流圈;连接S到s及t到T之前,通过满流判断可行解。 部分边容量发生变化:若影响原流,则设法将残流网络中对应边的容量减少或通过构造逆向圈等价减少。 容量为负数:求最小割时可能出现负边,此时应通过数值变换设法消除负边。 最小费变体: 类最大流变体:构造方式相似。 最小流量限制:将原边容量减少下限,构造新边容量为下限且费用为原费用减去一个足够大的数。 流量任意:由于点的势会不断增加,所以仅在势为负数时增广,即能保证费用不断减小。 费用为负:不能用Dijkstra算法,要用Bellmen-Ford算法处理负权边。另外,可以通过对所有边的费用和最终结果进行适当的变形避免负权边。 最小化有流边的费用之和:无法通过最小费用流模型求解,需要建其他模。 匹配相关对偶问题: 连通图中,最大匹配+最小边覆盖=顶点数 最大独立集+最小顶点覆盖=顶点数 二分图中,最大匹配=最小顶点覆盖 3.6 计算几何 3.6.1 核心思想 平面扫描:扫描线在平面上按既定轨迹移动时,不断根据扫描线扫过的部分更新,从而得到整体所求结果。扫描的方法,可以从左向右平移与y轴平行的直线,也可以固定射线的端点逆时针旋转。 凸包:包围原点集的最小凸多边形的点组成的集合,称为原点集的凸包。凸包上的点不被原点集任意三点连成的三角形包含在内部。通过Graham扫描算法,将点集按坐标排序后,分为上下两条链求解。每次末尾加入新顶点,如果出现了凹的部分,则把凹点删去。Graham可以在O(nlogn)的时间内构造凸包。最远点对一定是凸包上的对踵点,可以通过旋转卡壳法不断找寻对踵点,在O(n)复杂度内求解。 数值积分:通常在复杂的几何相交或求和问题中,通过对某个方向变量的微分,将立体切片或将平面切成线段后积分得到结果。 3.6.2 优化细节 向量表示:可以使用STL的complex类表示向量,并进行相应的内积外积操作。 计算误差:计算几何中的浮点数大小比较采取与ESP结合的方式,如a<0等价于a<-ESP,a≤0等价于a<ESP。由于double类型的精确尾数大约是10进制下的15位,当ESP太小时,可能造成假阴性。C++中可以采用更高精度的long double,Java可以使用BigDecimal。 极限情况:当可行解可以取连续一段值时,很多时候只要考虑边界的极限情况。 4.1 数论(二) 4.1.1 核心思想 线性方程组:可以采用高斯消元法求解。将方程组用矩阵表示后,遍历每列,保留该列系数最大的行(列主元高斯消元,减少误差),并将其乘以一定倍数用于消除其他行的该列元素。 一次同余方程:ax=b (mod m)。定义a的逆元为y满足ay=1 (mod m),则x=yb(mod m)。逆元y可以用扩展欧几里得求解。 费马小定律:若p为素数,a与p互素,则有a^(p-1)=1 (mod p)。 欧拉定理:对于一个正整数N的素数幂分解N=P1^q1P2^q2...Pn^qn,欧拉函数φ(N)=N(1-1/P1)(1-1/P2)...*(1-1/Pn),意义是不大于N且与N互素的正数个数。此时,对于与N互素的x,有x^φ(N)=1 (mod N)。费马小定律可以看作欧拉定理的推广。 线性同余方程组:若有解则一定有无数解,解的全集可写作x=b (mod m)。初始化为x=0,m=1。逐次加入一个新的方程ax=b (mod m),将上一步的x用mt+b的形式代入,转化为一次同余方程。 中国剩余定理:n=ab(a、b互素),则(x mod n)等价于(x mod a,x mod b)。所以,通过对n的质因数分解,可以通过只考虑模n的素因子的幂p^k来计算。 n!模p:将阶乘表示为n!=ap^e,则e=n/p+n/p^2+n/p^3+…。由于阶乘中不能被p整除的项呈现周期性,乘积为(p-1)!^(n/p)*(n mod p)!。根据威尔逊定理,(p-1)!=-1(mod p)。考虑可以被p整除的部分,通过全部除以p,可以递归到n/p的范围考虑。 组合数模p:将n和m用p进制法表示后,根据Lucas定理,Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) ,则对于每一位,计算其组合数模p,将答案相乘即为C(n, m)模p。 容斥原理:先不考虑重叠的情况,将所有对象计算出来,再不断递归把重复计算的数目排斥出去,直到结果既无遗漏又无重复。由于递归时排斥采取减法,从全局来看应根据地柜深度的奇偶性判断符号正负。 莫比乌斯函数:在容斥定理中,每次排斥的规模d如果是n的约数,则被加减多次的总和只和n/d有关。求这个系数的函数叫莫比乌斯函数,记作µ(n/d)。若x可以被大于1的完全平方数整除,则µ(x)=0;否则计算x的质因子个数k,µ(x)=(-1)^k。莫比乌斯反演定理利用µ(x)推出,f(n)=∑g(d)等价于g(d)=∑µ(n/d)*f(d)。 Polya计数定理:在组合问题中,有时要求把旋转和翻转之后的状态看作相同态,计算本质不同的个数。此时应把所有方案重复计算相同次数,再把结果除以重复的次数。另外,立方体的染色、相同颜色的数量限制、相邻状态限制,都可以用Polya求解。 4.2 博弈论 4.2.1 核心思想 必胜策略:任意方式都无法转移到必胜态的为必败态N,存在一种方式可以转移到必败态的为必胜态P。 Nim:初始有n堆石子,每堆有ai石子,游戏规则是每次从某堆中取走至少一颗,判断初始状态是否必胜。若ai数组异或结果非0则为必胜态,否则为必败态。 Grundy数:当前状态的Grundy值是除任意一步所能转移到的状态的Grundy值以外的最小非负整数。所以,从Grundy为x出发,可以转移到Grundy为0到x-1的状态。Grundy数等价于Nim中的石子个数,再通过异或判断状态必胜与否。 4.2.2 优化细节 取放石子:Grundy数可以转移到更大值,等价于Nim中放回石子。但可以通过采取对应策略再转移到原值的状态,所以对胜负没有影响。但此时,状态可能出现循环,所以需要注意可能会出现不分胜负、达成平局、永不结束的情况。 复合游戏:由于在Nim中,只要异或值相同,石子堆数不影响局面性质。所以对分割后的各部分取异或,就可以用一个Grundy数来表示几个游戏复合而成的状态。 4.3 图论(二) 4.3.1 核心思想 强连通分量:图中任意两点可互达的子图叫做强连通分量。任意有向图都可以分解为若干个不相交的强连通分量。将图中的强连通分量都缩成一个顶点,可以将原图转化为DAG(有项无环图)。 强连通分量分解:通过两次DFS实现。第一次DFS时,回溯时为顶点标号(后序遍历)。标号越小表示离图尾越近,即搜索树的叶子。第二次DFS时,将所有边反向后,从标号大的顶点开始遍历,每次遍历的顶点集合组成一个强连通分量,记录该分量的拓扑序。接着,再取未访问节点中最大标号的顶点开始DFS,拓扑序加一。直到顶点全部遍历,算法结束。总的复杂度是O(V+E)。 2-SAT:对于每个子句中文字个数不超过二的合取范式,可以将每个子句等价转化为两个蕴含关系,将所有蕴含关系为边、每个变量取真取假为点,构建有向图。图中的每个强连通分量内,若某个点为正确,则分量中所有顶点都为真。对于每个布尔变量,考虑其取真取假的两个点,点所在的强连通分量拓扑序大的点情况为真。由此,得到一组合法的布尔变量赋值。 LCA(最近公共祖先):有根树中,两个结点的公共祖先中距离最近的那个成为LCA。高效求解LCA可以采用倍增法预处理加二分搜索,或中序遍历后利用线段树或BIT做RMQ求解。 4.4 常用技巧(二) 4.4.1 核心思想 栈的应用:在栈内维护一个下标和对应值都单向递增的序列,则可求距离自己最近的比自己大的值。 双向队列的应用:队列中维护一个以某区间内最小值开始,单向递增的序列,则可求窗口大小一定的滑动最小值。 倍增法:通过预处理,计算出距离每个点2的次幂处的状态。由于转移到的目的地满足一定条件,且具有与下标单向相关性,所以可以通过二分搜索,每次将2的幂减1,判断是否出终极目标的位置。 4.4.2 优化细节 数量的二进制表示:在一定数量的物品中挑选若干个,可以通过每次是否添加2的次幂个物品来决定最终结果。将原本枚举的复杂度O(n)降至二进制位数O(logn)。 连续状态转移:在DP中,如果某状态可由连续的下标的一些状态转移来,并要求其最值。可以试着把状态转移方程分为两部分,一部分为常量,另一部分为只与前一状态下标有关。则问题转化为,求某个函数在某个滑动窗口内的最值。如果窗口大小固定不变,则可利用双向队列求解滑动最值。 4.5 智慧搜索 4.5.1 核心思想 剪枝:调整搜索顺序,从分支少或影响大的部分开始搜索。无任何效用或无法到达最终态的步骤可以提前剪枝。没有最优解则剪枝,通常可以通过贪心等算法求得最优解下界的下界。 IDA:通过搜索判断是否有某个不超过x的解,将x从0开始每次加1,首次求到解的x就是最优解。这样,在搜索过程中,就不会访问比最优解更大的状态。迭代加深搜索(IDDFS)类似于宽度有限搜索,按距离初始状态的远近访问各个状态,而IDA会通过估算下届提前剪枝优化。 A*:BFS和Dijkstra利用下界优化,将优先队列中的键值改为初始状态到当前状态的距离加上到目标状态的距离下界。此时,优先队列顶端元素未必是初始状态到当前状态的最短路。 4.5.2 优化细节 IDA与A对比: IDA针对DFS,A针对BFS。 IDA不怎么花费内存,A需要关于搜索空间的线性的内存。 通过不同路径到达同一状态,IDA效率急剧下降,而A可以通过选取合适的下届保证每个状态至多检查一次。 IDA*在不断增加递归深度限制时重复搜索了很多状态,但总的访问状态数和最后一次访问状态数是同一数量级的。 4.6 分治 4.6.1 核心思想 分治:将问题划分为更小规模的子问题,递归解决子问题,再将结果合并从而高效解决问题。 数列上的分治:每次递归数列长度减半,合并时除将子问题的情况合并外,还需要考虑左右两个子数列交互问题。通常需要在递归时,维护数列状态,如排序或某些统计值大小。 树上的分治:树的重心是指删除该顶点后最大子树顶点数最小的点。通过树的重心来分解树,可以避免分解不均匀导致的退化现象。按重心分割,可以保证,每次划分后子树的大小都不超过n/2,所以递归深度不超过O(logn)。 平面上的分治:将待求解平面按x或y坐标分为两部分,各子问题递归求解,再合并。对于两子平面交互的部分,通常可以通过一些限制条件,只考虑有可能达到最优解的一些状态,可以极大降低复杂度。 4.6.2 优化细节 树的递归:递归分解无根树时,可以代入两个参数,当前节点及父节点。在更新当前节点时,其所有相连顶点中,除去父节点及已被分解出去的子树根节点,其余就是可以继续递归的子节点。 4.7 字符串 4.7.1 核心思想 KMP:通过DP计算next数组,next[i]表示以模式串的第i个字符结尾的后缀与模式串前缀的最长公共子串中,公共子串结尾的位置。当模式串与母串进行匹配时,若发生字符不匹配的情况,可以将母串指针位置保持不变,将模式串的指针前移至next位置的后一个字符,若依然不等,递归next直到相等或者超出模式串头。复杂度O(m+n)。 Trie:树上的边对应字符,从根到节点的路径上的字符序列即为该节点表示的字符串。Trie是一个高效维护字符串集合的数据结构,查找长度为l的字符串复杂度为O(l),同时节约空间。 AC自动机:又叫Aho-Corasick算法,将多个模式串的所有前缀用Trie表示,再在Trie上进行KMP。 Robin-Carp哈希:将字符串看作b进制数,循环移动头尾,可以得到每个串的哈希结果,用来判断两字符串是否匹配。可推广到二维情况的哈希算法。 后缀数组(SA):将字符串的所有后缀按字典序排列后得到的数组,sa[i]表示排名第i的后缀的起始位置,rank[i]表示其实位置为i的后缀的排名。利用倍增的思想,可以在log(n(logn)^2)时间内得到后缀数组。通过计算得到的长度为k的所有后缀及其排名,利用rank[i]和rank[i+2]组合得到长度为2k的后缀及排名。 高度数组(LCP):后缀数组中两个相邻后缀的最长公共前缀。由于h[i-1]≥h[i]-1,可以从左到右遍历后缀头的位置,通过尺取法,在O(n)时间内求得。由于高度数组的传递性,结合RMQ,可以求得任意两个后缀间的最长前缀。 4.7.2 经典模型 串的状态转移:KMP/AC自动机 单字符串匹配:KMP/Robin-Carp哈希 多字符串匹配:Robin-Carp哈希/AC自动机/SA+二分搜索/扩展KMP 最长公共子串:strcat+SA+LCP+RMQ 最长回文子串:strcat+SA+LCP+RMQ/Manacher
分享
9
先马后看
沉沉果粒
伦敦政治经济学院·2022届

记一次小米一面面经。

记一次小米一面,潜水很久了,也分享一下。 面试官挺好,提前短信通知我面试时间。 上来自我介绍balabala。 看你实习过,问那个公司具体干什么的,你干了什么,怼项目,关于elasticsearch海量数据做过滤和统计。 看你简历上都是java,那我问你点java的东西把。 Q:你说你重写了hashcode,说一下你怎么写的? A:我只是过滤和统计的时候用到了set和map所以要重写hashcode,SHIFT+ALT+S生成的。。。 Q:重写equels需要重写hashcode吗,为什么? A:因为规定equels相等,hashcode必须相等,比如说hashmap、hashset添加的时候是先比较hashcode。 Q:和equels的区别? A:是比较两个对象的引用,equals是比较两个对象的值。 Q:object类equals方法是怎么实现的? A:不知道,没看过。(刚看了一下,实际上也是==) Q:hashmap讲一下? A:balabalabala... Q:hashmap初始容量可以自己定义吗? A:可以,但是必须是2的多少次幂。 Q:那我定义24呢? A:那么初始容量是32. Q:底层是怎么实现的? A:我记得看过,忘了。。。(刚刚想起来,是先与16比较,如果比16大,对16做<<位运算把,好像是这样) Q:hashtable知道吗? A:知道,hashtable是线程安全的,锁住整个数组,基本已经淘汰了。可以用concurrenthashmap。(没有继续往下问concurrenthashmap) Q:hashmap可以存null值吗,hashtable呢? A:可以,不可以. Q:final修饰的对象可以改变引用吗,可以改变值吗? A:可以改变值,不能改变应用。 Q:volatile知道吗? A:volatile内存可见balabala禁止重排序 Q:实现原理知道吗,内存屏障? A:不知道。 Q:volatile是线程安全的吗,比如++操作? A:不是线程安全的,因为++操作是三个操作,先读再加再写。 Q:static方法可以访问非static方法或变量吗? A:不可以。 Q:为什么不可以? A:...不知道,没研究过这个问题。 Q:那对象和类呢? A:想起来了,因为static方法是属于类的,所以static方法是不能访问的对象的方法的,因为每个对象的值可能不一样。 Q:线程池用过吗?说一下常用的线程池? A:用过,但是不记得常用的线程池,给他讲了一下线程池的原理,然后线程池的一些参数。 Q:keepAliveTime这个参数是干嘛用的吗? A:知道,非核心线程的存活时间。 Q:那是怎么计算这个时间的? A:从非核心线程闲置的时候开始计算(我猜的,他又问我确定吗,我说我确定) Q:synchronize讲一下,sleep,wait? A:balabalabala Q:可重入锁知道吗,synchronize是否可重入? A:知道,不可重入。对一个对象加锁后可以再对另外一个对象加锁。 Q:synchronize对static方法加锁? A:锁住整个类。 Q:ThreadLocal知道吗? A:不知道。。。 Q:说一下堆和栈? A:balabalabala。 Q:新生对象一定放在eden区吗? A:不知道。。 Q:那如果一个对象特别大,放在哪里? A:老年区(他还问我确定吗,提示你的时候回给你下套...) Q:看你用过spring,spring的拦截器知道吗? A:不是特别了解,项目中用到过...然后给他讲了我的单点登录...通过拦截器判断用户是否登录。 Q:看你用过redis,redis事务支持回滚吗? A:不支持回滚,redis事务串行执行,执行失败也不回滚。 Q:考你两个算法题,两个链表,判断是否相交,找出相交的第一个点? A:(后悔没刷剑指offer)用了最蠢的办法,插入到map里。。。 Q:25匹马,五条赛道。每条赛道跑一匹马,只能知道名次,不能知道速度,怎么找出前一二三名,用几次? A:(想了3-5分钟吧,不想浪费对方时间,虽然知道是不是最优的)8次。 Q:有什么想问我的? A:因为我是第一次正经面试...能不能给个评价? Q:还可以(很中肯...) ps:面试官很好,会适当引导。很感谢这位大哥。
分享
3
原味笔面经
今天你又漂亮了
北京师范大学·2022届

海尔&格力嵌入式开发2020春招面经

本人加拿大本科工程狗一枚,硕士申请无望,遂参加春招。嵌入式开发方面就有格力和海尔拿到了面试。两家公司都有线上测评。海尔竟然还有非常有特色的英语测试,包括了听力,口语,语法等,留学党表示没有什么压力。格力有单独的编程相关的测试,分选择题和填空题,涉及范围很广但是比较基础。 海尔 嵌入式开发(远程) 海尔是第一个给我发面试的公司,比心!hr会直接微信联系,确认面试时间。因为疫情原因,面试采用微信视频群聊,有一位hr和两位技术主管。面试时间比较短,主要是hr询问相关问题,气氛比较轻松。 自我介绍(根据简历来提问) 什么时候出的国? 年纪为什么这么小,是不是全日制本科? 学校的排名?为什么不考虑读研?(我怀疑因为我年纪太小了,面试官认为我读的不是四年的全日制本科233) 关于项目(根据简历来提问) FPGA用的是什么型号? 有没有接触过仿真和模拟?(我有一个在校的关于FPGA开发的项目,因为是申请嵌入式相关,就写在简历里了。面试官对这个比较感兴趣) 了不了解家电? 接不接受往硬件岗调剂? 对公司还有什么问题? 最后还说了一句我的英语测试成绩比较高,所以可以考虑海外的一些方向。目前有口头承诺的offer,还在等待最终结果。 格力 电控软件开发(远程) 邮件和短信告知面试时间,qq视频远程面试。 一面 技术面 项目相关:简单介绍一下项目,在项目中担任什么角色,项目开发中遇到了什么问题?(当时网络环境比较差,所以可能说的不够好) 二面 hr面 为什么选择这个岗位? 对于这个岗位,说三个你的优势。 来珠海会不会有什么问题? 你了解格力吗? 有没有女朋友?(工程狗不配) 为什么没有参加秋招,还面试了什么公司? 会不会考虑读研? 期望薪资? 还有什么问题吗? 技术面更偏向于项目相关的问题,比如用了什么技术,遇到了哪些问题,怎么解决的这些问题。hr面的问题比较具体,对于一些情况需要进行详细说明。现在已经拿到offer。 希望能给大家一些帮助~祝大家能顺利上岸!
分享
10
原味笔面经
犬马不复来
四川农业大学·2022届

Funplus2020届春招内推

多年游戏出海利润榜第1; 稳居Apple和Google全球收入榜Top50; Facebook TOP5全平台游戏开发者;Google 顶级开发者; LOL冠军战队FPX 所属公司; 主要的研发中心分别位于北京和旧金山,全球多地建有Office。 前端 后端 算法 测试 运营 产品 海量hc base 北京 上海 投递链接:https://dwz.cn/A72alX91
分享
1
校招情报局
靖gogo
北京师范大学珠海分校·2022届

我的2018年后台Java面经汇总,包含阿里、腾讯、头条等

下面是我个人记录的2018年的面试内容,发到这里希望大家能有所参考,比较长可以挑自己感兴趣的阅读 项目地址:interviews 目录 共分四部分: 春招和秋招时间线 2018年春季实习详情 2018年秋季校招详情 拉勾offer工厂2017资料 简介 经过招聘季每个人都会有相当多的面试经历,对我来说把这些写出来一方面是为了学习,另外一方面也希望能够为之后求职的同学提供一定的借鉴意义 我的笔试经历会把主要记得的题目列出来 我的面试经历详细介绍了以下几点 面试岗位 面试体验:这个有主观成分,但也能从我个人的侧面去反映公司是如何对待招聘的,请记住“面试者也是面试官,反之亦然” 面试问题:在面试过程中被面试官提问的问题 拉勾offer工厂2017资料,是当时拉勾做的一系列沙龙活动,其中ppt提到的面试问题很有参考价值,故而放到其中 我面试的岗位主要是后台开发和Java开发岗,有关Java的复习策略在我的一篇博客中有写 目录的README.md中记录了面试的总时间线,为了方便了解单独公司的单独部门情况,我又拆分了一下各公司的情况,想单独了解公司的可以去看各个公司的我个人面试情况 春招和秋招时间线 因为有很多同学都不太清楚春招和秋招的大概时间,所以单独列出来,希望同学们能够了解,不错过招聘机会。 春招 日期 活动 2018.03.02 京东金融面试 2018.03.05 滴滴面试 2018.03.06 今日头条面试 2018.03.27 Redhat面试 2018.04.17 阿里巴巴面试 2018.04.27 美团面试 2018.05.04 IBM面试 秋招 日期 活动 2018.07.13 京东金融面试 2018.07.16 京东金融面试 2018.07.22 拼多多笔试 2018.07.30 阿里巴巴菜鸟网络面试 2018.08.2 阿里巴巴阿里健康面试 2018.08.6 中国银联面试 2018.08.10 猿辅导面试 2018.08.11 网易互联网笔试 2018.08.12 阿里健康第二次面试 2018.08.17 百度面试 2018.08.17 Indeed的笔试 2018.08.19 腾讯笔试面试 2018.08.20 网易互联网面试 2018.08.22 阿里健康第四次面试 2018.08.23 腾讯笔试面试 2018.08.24 完美世界面试 2018.08.25 拼多多面试 2018.08.27 美团点评面试 2018.09.04 阿里飞猪 2018.09.05 腾讯笔试面试 2018.09.05 阿里飞猪 2018.09.06 阿里飞猪 2018.09.06 快手 2018.09.08-09 微策略 2018.09.10 智者四海——知乎 2018.09.11 图森未来 2018.09.13 腾讯 2018.09.15 宜信 2018.09.15 网易游戏雷火 2018.09.19 网易游戏雷火面试 2018.09.20 字节跳动笔试 2018.09.21 网易游戏雷火面试 2018.09.27 图森未来面试 2018.09.30 图森未来面试 2018.10.13 字节跳动面试 2018年春季实习详情 2018.3.2 京东金融面试 面试岗位为JAVA开发实习生,一共有两面,第一位是年长的工程师,第二位是年轻的工程师,侧重角度不一样。第一位主要了解你的整体情况和个人想法,以聊天为主。第二位问了很多细节的题目,以问答为主。下面列举一下我遇到的问题 java设计模式有哪些,讲讲单例模式具体怎么写还有具体用在哪里?装饰者模式是什么意思? 答:http://renyuan-1991.iteye.com/blog/2246557 现在有三个表 S表 id name 1 zhangsan 2 lisi C表 id name 1 math 2 english SC表 sid cid score 1 1 98 1 2 85 查找出“数学分数最高的人名”,写个sql语句代码,写的时候我使用了in,然后问到in和exist的区别,哪个效率更好?SQL优化了解哪些? springmvc路由你是怎么写的 答:xml配置或者注解,RequstMapping springmvc如何接受ajax数据 答:有两个注解,一个能接收json数据,另外一个能返回json数据,好像是ResponseBody和RequestBody 前端多级级联的select怎么写,比如说选择了河北省,下一级就会出现城市名 答:使用jQuery,change监听函数里写ajax,返回后使用append函数加入下一级标签中 java的堆和栈怎么理解的 String a = "a",“a”存到了java的哪个区 答:静态区 复制代码 1 2 3 4 5 6 7 public void main(){ String a = "a"; cal(a); } public void cal(String a){ a = "b"; } a的值是多少? 答:是“a”,因为java都是值传递,不是引用传递 复制代码 1 2 3 4 public void main(){ String a = "a"; a += "b"; } "a"会被销毁么? 答:不会,因为string的加法运算相当于新建了一个对象,所以不会销毁 mybatis #和$区别 linux如何查看进程占用cpu和内存情况 答:top指令 linux如何部署war包? 答:http://blog.csdn.net/wangyonglin1123/article/details/44960875 java环境搭建都用什么指令? 答:http://blog.51cto.com/vvxyz/1642258 dns服务器如果域名和ip不一致,访问了该域名会发生什么? 如果路由器上路由表内没有你要访问的地址会发生什么? sql优化知道什么 数据库字符乱码可能是哪儿的问题 nosql数据库用过什么,为什么使用 redis用过么,怎么理解的 栈都有哪些典型用途 答:十进制转二进制、括号匹配、二叉树非递归遍历 java虚拟机都知道什么 抽象类和接口有什么区别 重载和重写的区别 有没有看过框架源代码 sql分页查询怎么写 mybatis实现原理、springmvc实现原理 SQL语句exist和in的区别 答:https://www.jianshu.com/p/f212527d76ff 还有如果简历里放了博客的话,人家可能会问你分享一篇你觉得你写的不错的博客 查找13条到23条的sql语句 答:select * from name limit 13,10 2018.3.5 滴滴面试 面试岗位为后台开发实习生,一共有两个面试官,面试的部门为地图开发部,主要使用语言是C++和Python,后台使用的是flask框架,总体上问的比较笼统,问细节上的不是特别多,有一些问题也没答上来 数据库引擎InnoDB和MyISAM的区别 大数据方面你读过什么书么,想做这方面的你有什么优势 写个二叉树的广度遍历和深度遍历 ORM的实现原理 Map Reduce的具体细节步骤 答:Map Partition Sort Combine Copy Merge Reduce http://www.cnblogs.com/npumenglei/p/3631244.html 2018.3.6 今日头条面试 面试岗位为后台开发实习生,一共有四个面试官,面试的部门为懂车帝,主要是做后台服务的,前三个应该是技术面试,但是第三个面试特别快,前两个面的比较久,第四个是hr面试,聊了聊今日头条的情况,带我参观了下今日头条的工作区,整体环境还蛮不错的,据说提供一日三餐 第一面 介绍一下项目 讲讲区块链和最近读的论文 比如1234的下一个比他大的数是1243,再下一个是1324,如何给出下一个数找到比他大的数 二叉树上最大值和最小值节点路径距离是多少? 复制代码 1 2 3 3 2   4 1  0 像上面的树就是0和4,距离为3,其实本质就是遍历一遍先找到最大值和最小值,然后从根路径上进行遍历,从两个值路径分开开始记录遍历层数,然后加起来就是距离 问问实习经历 第二面 介绍一下项目 讲讲区块链,对我们当前的设计产生了极大的疑问,我也没有解释清楚,然后被鄙视了下研究生毕业设计没准备、研究方向不明确 问我熟悉哪门语言,我说java和python,然后问我学习过c++木有,我说本科学习过,然后就出了个strcpy库函数的实现,说很简单,,,结果空指针处理什么的,也没弄清楚,最后也没写明白 有两个文件a和b,找出里面相同的url,最开始我写的是遍历,时间复杂度是n2,然后用排序复杂度是nlogn,想起了字典树,复杂度是nlogm,面试官说可以用hash,复杂度就到n了,整个过程也不是很顺利 第三面 讲讲区块链,又讲了下我看的论文 问问你觉得你的优点是什么,缺点是什么 你觉得你是属于更能坚持的类型还是说更喜欢接触不同的新技术类型 除了技术外还有什么爱好 问问实习经历 第四面hr小姐姐 问问你的学习方向,用什么语言 头条你都了解什么 工作时间了解么 balabala,总之hr还是相对和蔼可亲的 面完一天后生无可恋,回来就睡,太难受了 2018.3.27 Redhat面试 面试岗位为JAVA的wildfly中间件开发实习生,套路和之前的不一样,是先让做一个工程,使用maven做一个J2EE的hello world,然后做单元测试,改了好久,直到这周才接到面试通知,本来打算直接是外国人的外语面试,但是由于经理很忙,就先由小组的中国人来面试。主要语言就是用JAVA,然后也先讲清楚了要做什么,和其他的面试很不一样,也是怕我没想清楚,毕竟和其他的实习性质有所区别,是在做开源,而且不是做常见的web开发,而是底层中间件web服务器的实现,包括需要测试东西,其实感觉我的个人经历和要求其实并没有很搭配,面试官对web开发相关的也并不是很了解,更多的是希望我沉下心来读很多的源代码,会很枯燥。 了解java什么,lambda表达式本质是什么? maven中之前让你写的phase表示什么意思? 英语自我介绍一下,你想学的是什么,不想学什么(纯英语面试)? git rebase是做什么用的? 有关注过什么开源项目? 平时用什么操作系统 之前说的工程里的有关单元测试的问题你懂了么?不应该throw异常了还能正常通过单元测试。 这只是第一次面试,还有下一次的意大利视频面试,是和外国面试官交流,压力很大。 2018.4.14 第二次面试真是姗姗来迟,其实就是过去和中国面试官和外国面试官一起聊天,问问我几个基本的问题,并没有技术问题,其实就是练习下英语口语,自己渣的可以,至于会不会被录取也不知道,听天由命吧。 2018.4.17 阿里巴巴面试 面试岗位为JAVA开发实习生,今天已经不是第一次面试了,之前有一次,但是当时没记录,只好记录这次的了 自我介绍 讲一个项目,我说的区块链,然后围绕着区块链说了一堆,比如说我没回答上来的,有没有做性能测试,还有orderer节点都有什么服务 最大堆概念 排序算法比较排序时间复杂度,如何查找最大的1000个数 有没有什么排序算法能够小于nlogn的 2018.4.27 美团面试 这次面试一共有两面,第一面比较简单问了很多基础问题,基本都能答上来,第二面问了很多细节问题,有很多发现自己理解不深刻,出现了问题,记录几个 跨域的理解,只有浏览器才可能存在跨域,跨域其实是在请求了某个域名的服务之后同时又去发起了其他域名的请求,所以只有浏览器可能存在,因为他会请求回来静态资源后解析再次发送请求,而类似于postman就不会有这样的问题,因为他得到的是静态资源文本而不会再次做解析 tomcat解析sevlet发生了什么? 对于抢单场景要怎样设置数据库,要分开然后利用nginx根据hash去存库,查找也是同理 JSONP如何理解,为什么没有使用 还问了两道算法题,但是自己写的比较慢,而且也不敢保证正确,毕竟好久没练了,但是题目都不难 最小堆如何做插入和删除的 HashMap如何映射到内存里 如何评价自己在云平台项目的表现 数据库线程池有哪几种 对称密钥和非对称密钥是用来解决什么问题的 2018.5.4 IBM电话 投递的邮件有作用了,那边在做区块链医疗,招收实习生 是否有golang的开发经验 fabric了解哪些 nodejs开发经验 医疗你们这边在做什么 2018年秋季招聘详情 2018.7.13 京东金融面试 面试岗位 JAVA开发实习生 面试体验 一共有两面,电话面试,第一面考察区块链,第二面考察java基础,问了很久,态度很认真 面试问题 区块链交易流程? java中spring是如何理解的? 四道算法题: 第一题:一个人一次可以上一个台阶或者两个台阶,问到第n个台阶有多少种方法? 第二题:n*m的迷宫,只能向右或者向下走,从左上角到右下角有多少条路线 第三题:100101这样的数组,1表示有人在椅子上,0表示没人在,找到一个没人在的地方且距离所有人的距离之和最大 第四题:有一亿个数,找到第10大的数 hashmap结构 get和post区别 2018.7.16 京东金融面试 面试岗位 JAVA开发实习生 面试体验 非常糟糕!因为之前面试过所以只面了一次,而且在此次面试中知道了京东原来打着提前批的旗号结果是实习不给校招offer,真是套路满满,而且按照时间到了通州的京东之后hr临时预约邀请码,过了半个小时才带我上去,上去面了之后,居然又是半个小时没有人理我了,面试场地已经没有人了而且到了下班时间,然后给hr打电话不接发微信不回,过了十分钟我离开京东大厦,拉黑了京东金融的hr,这次面试导致了我生平第一次拉黑别人 面试问题 java有什么更多的学习和了解,分布式?多线程? 金融系统的容错级别很高,讲了很多,balabala 2018.7.22 拼多多笔试 不用多说了,牛客网这个平台,开视频监控,可以跳出使用IDE,四道算法题 第一题 题目描述 自动售货机里有 N 瓶复制可乐。复制可乐非常神奇,喝了它的人会复制出一个自己来! 现在有 Alice, Bob, Cathy, Dave 四个人在排队买复制可乐。买完的人会马上喝掉,然后他和他的副本会重新去队伍的最后面排队买可乐。 问最后一个买到复制可乐的人叫什么名字? 输入描述: 输入仅有一行,包含一个正整数 N (1 <= N <= 1,000,000,000),表示可乐的数量。 输出描述: 输出喝到最后一罐复制可乐的人的名字。 示例1 复制代码 1 2 3 4 输入 8 输出 Bob 说明: 前8个喝到可乐的人依次为:Alice, Bob, Cathy, Dave, Alice, Alice, Bob, Bob. 解题思路 代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.util.Scanner;   public clas***ain {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         String[] names = {"Alice", "Bob", "Cathy", "Dave"};         while (sc.hasNext()) {             long N = sc.nextLong();             long i = 0;             long basic = 4;             while (N > basic) {                 N -= basic;                 basic *= 2;                 i++;             }             int y = (int) Math.ceil(N / Math.pow(2, i));             System.out.println(names[y - 1]);         }     } } 第二题 题目描述 四年一度的世界杯又来了!小多在公司内发起了一个票选最强球星的活动。共有 N 个候选球星,每位投票者需要在选票上为每位候选球星评定一个实例等级,等级由英文字母表示,'a' 级最高,'z' 级最低,共26级。 我们称候选球星 X 强于候选球星 Y,当「 X 的评级比 Y 高」的票数高于「 Y 的评级比 X 高」的票数。若一个候选球星强于任一其他候选球星时,则称该球星为“球王”。根据这个规则,至多只会有一个球王。需要注意的是也可能没有球王。现在给出所有 M 张选票,请你帮小多判断一下哪位候选球星是球王。 输入描述: 第一行包含2个整数 N、M,分别表示候选球星数量以及选票数量。接下来有 M 行,每行是一个长度为 N 的字符串,每个字符串表示一张选票上的信息。每个字符串的第 k (0 <= k < N) 个字符, 表示这张选票对第 k 个候选球星的评级。 数据范围: 复制代码 1 2 3 1 <= N <= 50 1 <= M <= 50 字符串只包含小写英文字母(a-z)。 输出描述: 若有球王,则输出一行仅包含一个整数 X,表示编号为 X (0 <= X < N) 的候选球星是球王;若没有球王,则输出一行仅包含一个整数 -1 。 示例1 复制代码 1 2 3 4 5 6 7 8 输入 4 3 acbd bacd bdca   输出 0 示例2 复制代码 1 2 3 4 5 6 输入 4 1 acad   输出 -1 解题思路 代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import java.util.Scanner;   public clas***ain {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         while (sc.hasNext()) {             int N = sc.nextInt();             int M = sc.nextInt();             sc.nextLine();             String[] notes = new String[M];             for (int i = 0; i < M; i++) {                 if (sc.hasNext())                     notes[i] = sc.nextLine();             }               int[][] matrix = new int[N][N];             for (int i = 0; i < M; i++) {                 for (int j = 0; j < N; j++) {                     char a = notes[i].charAt(j);                     for (int k = j + 1; k < N; k++) {                         char b = notes[i].charAt(k);                         if (a < b) {                             matrix[j][k] += 1;                         } else if (b < a) {                             matrix[k][j] += 1;                         }                     }                 }             }             boolean flag = true;             for (int i = 0; i < N; i++) {                 flag = true;                 for (int j = 0; j < N; j++) {                     if (i == j)                         continue;                     if (matrix[i][j] <= matrix[j][i]) {                         flag = false;                         break;                     }                 }                 if(flag) {                     System.out.println(i);                     break;                 }             }             if(!flag)                 System.out.println(-1);         }     } } 第三题 题目描述 有N个货物(0<=N<=1024),每个货物的重量是W(100<=W<=300)。如果每辆车最多的载重为300,请问最少需要多少辆车才能运输所有货物。 输入描述: 一行输入,包含N个正整数,表示每个货物的重量,空格分隔。 输出描述: 一行输出,包含一个整数,表示需要的车辆数。 示例1 复制代码 1 2 3 4 5 输入 130 140 150 160   输出 2 解题思路 代码 第四题 题目描述 A 国的手机号码由且仅由 N 位十进制数字(0-9)组成。一个手机号码中有至少 K 位数字相同则被定义为靓号。A 国的手机号可以有前导零,比如 000123456 是一个合法的手机号。小多想花钱将自己的手机号码修改为一个靓号。修改号码中的一个数字需要花费的金额为新数字与旧数字之间的差值。 比如将 1 修改为 6 或 6 修改为 1 都需要花 5 块钱。给出小多现在的手机号码,问将其修改成一个靓号,最少需要多少钱? 输入描述: 第一行包含2个整数 N、K,分别表示手机号码数字个数以及靓号至少有 K 个数字相同。第二行包含 N 个字符,每个字符都是一个数字('0'-'9'),数字之间没有任何其他空白符。表示小多的手机号码。 数据范围: 2 <= K <= N <= 10000 输出描述: 第一行包含一个整数,表示修改成一个靓号,最少需要的金额。第二行包含 N 个数字字符,表示最少花费修改的新手机号。若有多个靓号花费都最少,则输出字典序最小的靓号。 示例1 复制代码 1 2 3 4 5 6 7 输入 6 5 787585   输出 4 777577 说明: 花费为4的方案有两种:777577与777775,前者字典序更小。 解题思路 代码 2018.7.30 阿里巴巴菜鸟网络面试 面试岗位 菜鸟网络的JAVA开发岗 面试体验 工作内容为Java后台的业务开发,还有一部分C++工作,聊了大概1个小时,发现自己还是有很多基本的问题没搞清楚,有很多收获 面试问题 malloc的时候操作系统是如何分配内存的 taobao.com整个的请求过程,互联网协议入门(一) 比特币的交易过程,多久确认:10分钟 Fabric使用CA的目的 TreeMap的结构 Promise和异步的区别 REST和其他的区别 fabric0.6和1.0的区别,答案 2018.8.2 阿里巴巴阿里健康面试 面试岗位 阿里健康的JAVA开发岗 面试体验 又发现了很多技术盲点,整体感觉良好 面试问题 Fabric在哪里做的共识,如何解决双花问题和节点伪造问题的,比如说A给B转账5元,给C同志1元劳务费,但是该节点作弊了怎么办? 拜占庭算法的理解? TCP协议拥塞是怎么解决的? JAVA虚拟机的理解? JAVA线程池的参数都有什么? 有序链表和二叉搜索树在查找和插入上时间复杂度的区别?了解过红黑树么,在插入上有什么优化? 介绍下你觉得你做的比较好的项目,解决了哪些技术难点? 2018.8.2 腾讯面试 面试岗位 前端开发 面试体验 首先很奇怪不知道为什么会被分到前端开发去,因为我并没有投递这个岗位,可能是放到简历池被面试官挑选的,前端我并没有准备太多所以回答的并不好,这里提醒面试者把求职意向写好,面试官很认真,自己答得不好,凉了 面试问题 为什么你们选择vue window下都有什么对象 XSS的理解和如何解决 前端工程化用了什么 部署环境下如何调试 浏览器如何用js判断脚本 遇到问题时怎么查资料去解决问题 2018.8.2 中国银联笔试 题目都是和考公务员的题目很像,包括选择题、逻辑题等,反而技术题目很少 2018.8.6 中国银联面试 面试岗位 应用开发(偏核心系统智能运营) 面试体验 面试的时候发现人家都是穿正装来的,尴尬,都没准备衣服,得亏换了个衬衫,要不然太尴尬,整体面试安排和互联网公司大不相同 面试问题 第一面是群面,给了一道题,金融相关的,没人看过资料后做一分钟发言,然后集体讨论15分钟,最后由一个人总结3分钟,群面其实还是蛮有套路的,如果自身能力不足不要冲前,主要是关注问题本身,关注讨论时间,把这两个做好基本就能通过面试 第二面是技术面,整体没问太多就问了问项目,然后问了问DevOps,问我是否接受调剂,有运维的工作可能会被调剂,我就坚持说更希望开发,也能接受调剂 2018.8.10 猿辅导面试 面试岗位 后台开发 面试体验 整体体验很好,早上去面试还准备了零食,面试官给人的感觉很舒服,尤其是第二面的时候,感觉确实在了解你整个人的技术水平和项目经历,而不是很多面试官就着自己懂得问题去问,或者就问自己准备好的问题,被尊重的感觉油然而生 面试问题 第一面问了几个问题,然后主要是做算法题 servelet生命周期 java多线程共享变量怎么处理 链表删除倒数第n个数 给一个无序int栈,要求只能用栈这种结构来给栈中的int降序排序:再加一个栈就行了,用来存结果,再用给的栈做临时存储就可以 第二面问了项目的问题,然后做了一道算法题 ringbuffer实现put和get,注意处理满和空的情况:满和空要加个isFull或isEmpty来处理,记得最后处理这两个值 2018.8.11 网易互联网笔试 岗位投递的是杭州研究院,先要经过笔试的洗礼,笔试的内容分为选择题40分,简答题20分和编程题60分,选择题和简答题记不太住了,主要写写编程题吧 小易觉得高数课太无聊了,决定睡觉。不过他对课上的一些内容挺感兴趣,所以希望你在老师讲到有趣的部分的时候叫醒他一下。你知道了小易对一堂课每分钟知识点的感兴趣程度,并以分数量化,以及他在这堂课上每分钟是否会睡着,你可以叫醒他一次,这会使得他在接下来的k分钟内保持清醒。你需要选择一种方案最大化小易这堂课听到的知识点分值。 输入描述: 复制代码 1 2 3 第一行 n, k (1 <= n, k <= 10^5),表示这堂课持续多少分钟,以及叫醒小易一次使他能够保持清醒的时间。 第二行 n 个数,a1, a2, ... , an(1 <= ai <= 10^4)表示小易对每分钟知识点的感兴趣评分。 第三行 n 个数,t1, t2, ... , tn表示每分钟小易是否清醒,1表示清醒。 输出描述: 复制代码 1 小易这堂课听到的知识点的最大兴趣值 示例1 复制代码 1 2 3 4 5 6 7 输入 6 3 1 3 5 2 5 4 1 1 0 1 0 0   输出 16 又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。 输入描述: 复制代码 1 2 3 4 第一行一个数n(1 <= n <= 10^5)。 第二行n个数ai(1 <= ai <= 1000),表示从左往右数第i堆有多少苹果 第三行一个数m(1 <= m <= 10^5),表示有m次询问。 第四行m个数qi,表示小易希望知道第qi个苹果属于哪一堆。 输出描述: 复制代码 1 m行,第i行输出第qi个苹果属于哪一堆。 示例1 复制代码 1 2 3 4 5 6 7 8 9 10 输入 5 2 7 3 4 9 3 1 25 11   输出 1 5 3 这题和leetcode 47比较像,就是n个a和m个z字母序排列,找到第k个排列数 示例 复制代码 1 2 3 4 5 6 7 输入 2 2 6   输出 zzaa   2个a和2个z排列,aazz,azaz,azza,zaaz,zaza,zzaa,第6个排列数就是zzaa 2018.8.12 阿里健康第二次面试 面试岗位 阿里健康的JAVA开发岗 面试体验 这次打电话又面试了很久,问了很多经典的问题,但很多又记得很模糊了,尴尬,本来都准备过的,可以答得很流利的 面试问题 一个数组中有正数和负数,找出来和最大的子数组 16瓶水中有1瓶水有毒,小白鼠喝了有毒的水1个小时后会死,一个小白鼠可以喝多瓶水,一瓶水也可以被多个小白鼠喝,现在给1个小时时间,最少需要几只小白鼠能够判断出来14瓶水是无毒的? java虚拟机垃圾回收机制 事务隔离级别有什么? concurrentHashMap实现原理?原来使用的什么锁?CAS具体如何实现的? Fabric的共识机制 kafka不是共识机制么? 一个文本有很多单词,找出来其中词频最大的k个单词?如果内存读一次装不下怎么办? HashMap扩容是怎么实现的?多线程同时put会存在什么问题? 单例怎么写,懒汉和饿汉哪个更适合多线程? 线程池的参数都有什么? 最近在看什么书? 比特币的共识机制? 2018.8.17 百度面试 面试岗位 搜索部 面试体验 后来了解到是做离线的搜索构建,也就是倒排索引,主要写C++,去了现场我就经历了一次面试,就回了,感觉没戏,人家对我并不感兴趣,因为我主要准备的Java,不过面试官态度很和蔼一直在微笑 面试问题 TCP拥塞如何做控制? 进程间通信的方式有哪些? 哪些排序是不稳定的?快选堆希 C++中的vector是如何实现的? 阻塞IO,非阻塞IO,同步IO,异步IO的区别? 事务的特性? TCP怎么做连接的?三次握手 wait_timeout怎么看?show global variables like 'wait_timeout',这个是mysql的配置数据库连接超时的参数,文章 反转字符串 合并两个有序链表 找出数组中最长的递增数组 进程,线程和协程的区别 2018.8.17 Indeed的笔试 Indeed实在太诱人了,但是做了四道算法题之后发现太难了,果然这样的公司抢手,算法题难度也非常大,好好刷题了要 2018.8.19 腾讯笔试 今天做了腾讯的笔试,题目如下 1.判断正整数是否是对称数,如3,123,121,12321。不能把整数转为字符串来判断。//返回 1:对称,0:不对称 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int reverse( int value){     int res = 0;     while (value){         res = res * 10 + value % 10;         value /= 10;     }     return res; }   int i***irror( int value ) {     if(value == reverse(value)){         return 1;     }else{         return 0;     } } 2.有一个链表,反转链表中第m到第n个元素。1 <=m <=n <= 链表长度 例子 1->2->3->4->5->6->null, m=2, n=4,反转后1->4->3->2->5->6->null 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 struct LinkNode {   int value;   struct LinkNode * next; };   LinkNode * reconstruct(LinkNode * head, int m, int n) {     ListNode *res = new ListNode();     res->next = head;     ListNode *tmp = res;     for(int i=0;i<m-1;i++){         tmp = tmp->next;     }     ListNode *p = tmp->next;     for(int i=0;i<n-m;i++){         ListNode *t = p->next;         p->next = t->next;         t->next = tmp->next;         tmp->next = t;     }     return res->next; } 3.有一个二叉树,每个节点的值是一个整数。写一个函数,判断这颗树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1,否则返回0。 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 struct TreeNode {   int value;   struct TreeNode * left, * right; };   int haspath( struct TreeNode * root, int value ) {     if (root == NULL) {         return 0;     }     if (root->left == NULL && root->right == NULL && value - root->val == 0) {         return 1;     }     return haspath(root->left, value - root->val) || haspath(root->right, value - root->val); } 4.实现x^n次方,时间复杂度要O(logN) 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 double pow(double x, int n) {     Double res = 1;     if(n == 0)        return res;     int tmp = n;     while(tmp != 0)     {         if((tmp & 0x1) != 0)            res *= x;         x *= x;         tmp /= 2;     }     return res; } 2018.08.20 网易互联网面试 面试岗位 杭州研究院 面试体验 这次面试可以说是我面试体验目前为止倒数top的,首先最重要的是这次面试没通过,其次要去杭州只报销去的路费,相当于自己要花将近700元在回来的路上,最关键的是第二面的面试官整体上不愿意和我交流,甚至连我的项目和研究经历都没问,只让我自己讲讲,经常面试到我回答完问题就不说话,好像不知道面试我什么一样,上来问我家在哪儿将来打算去哪儿工作,总体来讲面试官给我的感觉是,最开始就没想让我通过的心态去面试的,个人觉得作为技术面试官,这样的表现是非常不合格的,也让我对网易互联网的印象大打折扣 面试问题 第一面 AOP的实现机制 实现四个单例模式 共识机制的了解 分布式数据库是否使用过 缓存可能会出现什么问题 使用了Spring的什么特性 数据库sharding如何做,其实就是垂直切分和水平切分。。。 tcp的三次握手和四次挥手 B+树和B树的区别 二叉树和红黑树的区别 ThreadLocal作用,为什么要使用 第二面 10个商品的秒杀系统设计 如何解决缓存穿透,缓存雪崩等问题 讲讲jvm 如果发生了频繁的fullGC要怎么查找问题 2018.08.21 腾讯面试 面试岗位 WXG事业部后台开发 面试体验 面试官非常nice,之前的笔试也是他通知我做的,还加了我的好友,每次面试前都会提前通知我一下,人也很和气,面试的时候全部的问题都是针对我的个人项目,问的非常详细,每个都是,并没有问一些基础语法或者一些基本课程的理解,虽然在实现的细节点上并没有特别考察我,但是从整体的项目上考察了我的理解和是否真的做了那么多,感觉还是很受尊重的,因为其他面试能聊两个项目也就最多了 面试问题 全部是关于项目上的,就不列出来了 2018.08.21 阿里健康第三次面试 面试岗位 Java开发工程师 面试体验 阿里的面试整体感觉都蛮好的,这次面试官也很不错 面试问题 如果给你之前实习的mentor提意见的话,你会提出什么? 在做项目中的技术难点有哪些?有什么收获? 一个对象里面存了开始时间和结束时间,现在有M个对象,求出一个没有交集的对象的集合 2018.08.22 阿里健康第四次面试 面试岗位 Java开发工程师 面试体验 这次是到阿里健康里面去面试,面试官应该是级别较高的人,总体体验还是很好的 面试问题 聊实验室的方向和做的项目 说一件你最得意的事儿,最失败的事儿和最出格的事儿 说一件你一直在坚持的事情 有几百亿个数字找出其中的中位数 2018.08.23 腾讯笔试 //请在1小时内完成以下4道题目,完成后请在题板发送消息。 //答案直接写在此题板上,面试官可以实时看到。 //==== 1.有一个二叉树,每个节点的值是一个整数。写一个函数,判断这颗树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1,否则返回0。 复制代码 1 2 3 4 struct TreeNode {   int value;   struct TreeNode * left, * right; }; 函数定义如下int haspath( struct TreeNode * root, int value ) 复制代码 1 2 3 4 5 6 7 8 9 int haspath( struct TreeNode * root, int value){     if(root == NULL){         return 0;     }     if(root->left == NULL && root->right == NULL && value-root->value==0){         return 1;     }     return haspath(root->left,value - root->value) || hashpath(root->right,value - root->value); } 对于给定二叉树BT,其定义如下: 复制代码 1 2 3 4 5 struct BT{  struct BT *left, *right;  struct BT *next, *prev;  int value; }; 为方便中序遍历,现要求实现一个函数,使*prev, *next分别指向其中序遍历的前一个节点及后一个节点。 函数定义如下:void BuildInorderThreadedBT(BT *root) 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void Inorder(BT *root, vector<BT*>& res){     if(root){         Inorder(root->left,res);         res.push_back(root);         Inorder(root->right,res);     } }   void BuildInorderThreadedBT(BT *root){     vector<BT*> res;     Inorder(root,res);     int count = res.size();     cout << count <<endl;     if(count<=1)         return;     res[0]->next = res[1];     for (int i = 1; i < count-1;i++)     {         res[i]->prev = res[i-1];         res[i]->next = res[i+1];     }     res[count-1]->prev = res[count-2]; } 3.某一个大文件被拆成了N个小文件,每个小文件编号从0至N-1,相应大小分别记为S(i)。给定磁盘空间为C,试实现一个函数从N个文件中连续选出若干个文件拷贝到磁盘中,使得磁盘剩余空间最小。 函数定义如下: int MaximumCopy(std::vector<size_t> s, size_t C, size_t &start_index, size_t &end_index); 函数返回值为剩余空间,如无解返回-1。 其中start_index, end_index为文件的编号。 如N=5,S = {1, 2, 3, 5, 4},C = 7 结果为p = 0, q = 2, return = 1 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 int MaximumCopy(std::vector<size_t> s, size_t C, size_t &start_index, size_t &end_index){     int count = s.size();     size_t min = C;     size_t tmp_start_index = 0;     size_t tmp_end_index = 0;     size_t sum = s[0];     while(tmp_start_index<count){         if(C - sum < 0){             sum -= s[tmp_start_index];             tmp_start_index++;             if(tmp_start_index > tmp_end_index)                 tmp_end_index = tmp_start_index;         }         else if(C - sum < min){             min = C - sum;             start_index = tmp_start_index;             end_index = tmp_end_index;             tmp_end_index++;             sum += s[tmp_end_index];         }         else{             tmp_end_index++;             sum += s[tmp_end_index];         }     }     return min==C?-1:min; } -- 4.公司减员增效,希望得到最大的收益(在收益相同的情况下,取裁员人数最小的方案)。假设有n个员工,每个员工的收益为cost[i]( cost>0说明为收益为正,cost<0为收益为负)。员工关系有m条,m[i]={ x,y}表示x是y的上级,如果员工的所属的上级被拆掉,那么员工也要被拆掉。现假设员工只属于一个上级,求解裁员后公司的最终收益值result,裁员员工id列表fire_list? 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 struct Relation{  int x;  int y; }; struct Tree{     int up; //上级     int *down; //下级 } Tree* createTree(const Relation* m, int m_size){     for(int i=0;i<m_size;i++){         //构建森林,可以考虑并查集     } } void preOrder(Tree **root, int& result, int* fire_list){     for(int i=0;i<root.size();i++){         if(root[i]){             //计算所有链上的最大和且和大于0             res = cal();             sum = calSum();             //保存结果             fire_list.push_back(res);             result += sum;         }     } } void caiyuan(const int* cost,int cost_size, const Relation* m, int m_size,int& result, int* fire_list, int& fire_size){     //构建森林,每棵树是多叉树     Tree **root = createTree(m, m_size);     //分别对每棵树进行深度遍历,遍历每条链表上从头开始的最大和且和大于0,如果每条都小于0那么整个树就都放弃掉     preOrder(root, result, fire_list); } 2018.08.24 完美世界面试 面试岗位 Java开发工程师 面试体验 整个过程从上午10点开始一直到下午5点,上午介绍了完美世界的情况,下午面试,等了好久只面了一面,问的问题都非常细,感觉自己表现并不好 面试问题 基本collection类中包含哪些 hashmap如何判断key值重复 线程池的实现,offer和take Spring到controller前的过程 sql语句实现 2018.08.25 拼多多面试 面试岗位 Java开发工程师 面试体验 一共有两面,加上一面hr,面试官都很随和,整体面试感觉还不错 面试问题 第一面 java的直接内存讲讲? java类的加载过程 讲讲抽象工厂 Node.js了解什么 第二面 中间人攻击讲讲 https是怎么做的 linux内存管理 IoC注入过程,父类怎么办 hr面 拼多多加班很多能接受么? 你对于北方和南方会怎么考虑? 2018.08.27 美团点评面试 面试岗位 后台开发工程师 面试体验 只有一面,感觉面试官对于我并不感兴趣,整体技术也偏C++,面试官人很随和,但是问题描述不清楚,耽误了一些时间,而且感觉导致他对我评价变低 面试问题 有一堆IP地址范围,查找某个IP地址属于哪个IP地址范围 网络字节序大小端,如何用代码判断是否为大小端 TCP四次挥手,TIME_WAIT,CLOSE_WAIT的理解 哲学家就餐问题如何解决? 以 2018.08.28 为时间节点,我要开始好好找工作了!!! 2018.09.04 阿里飞猪 面试岗位 JAVA开发工程师 面试体验 面试官电话来的很晚,基本是要睡觉了,可以感觉出来阿里的工作不轻松呀 面试问题 class存在哪儿,jvm结构 stringbuffer和stringbuilder的区别 2018.09.05 腾讯笔试面试 面试岗位 后台开发工程师 面试体验 这次面试又发来了三道题,然后电话问了问项目,最后一道题还是好难啊 面试问题 注:进阶部分不一定要实现。 为了提高效率,可以在个人本地电脑的编译器上验证代码,并把解题代码和验证代码都贴上来。 1.对于一棵满二叉排序树深度为K,节点数为 2^K - 1 ;节点值为 1至 (2^K-1)。 给出K和任意三个节点的值,输出包含该三个节点的最小子树的根节点值 样例输入:4 10 15 13 样例输出:12 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include <string.h> #include <errno.h> #include <math.h> #include <iostream>   using namespace std;   int main() {     freopen("/Users/guanpengchn/Code/test/c/data.txt","r",stdin);     int K;     while(cin>>K){         int sum = (1<<K) - 1;         int node[3];         int link[100];         int res=0;         for(int i=0;i<3;i++){             cin>>node[i];             int root = (sum + 1)/2;             int k = K-1;             if(i==0){                 for(int j=0;j<K;j++){                     link[j]=root;                     if(root>node[i]){                         root -= 1<< (k-1);                     }else if(root < node[i]){                         root += 1<< (k-1);                     }else{                         break;                     }                     k--;                 }             }else{                 for(int j=0;j<K;j++){                     if(link[j]==root && link[j]!=res){                         res=link[j];                     }else{                         break;                     }                     if(root>node[i]){                         root -= 1<< (k-1);                     }else if(root < node[i]){                         root += 1<< (k-1);                     }                     k--;                 }             }         }         cout<<res<<endl;     }     return 0; } 2.回形矩阵是由1开始的自然数顺时针排列成的一个n*n矩阵,n为奇数. 复制代码 1 2 3 4 5 1   2   3   4   5 16  17  18  19  6 15  24  25  20  7 14  23  22  21  8 13  12  11  10  9 要求打印出它的一个子矩阵(m*m),例如在n=5的矩阵里面以起始点 xy( 2,2 ) 打印m = 2的正方形,则输出: 17,18 24,25 进阶: 是否可以应对超大规模的情况,例如n > 10000000,m<100的场景 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <string.h> #include <errno.h> #include <math.h> #include <iostream>   using namespace std;   int main() {     freopen("/Users/guanpengchn/Code/test/c/data2.txt","r",stdin);     int n,x,y,m;     while(cin>>n>>x>>y>>m){         int index, i, j;         int matrix[100][100];         for(int i=0;i<100;i++){             memset(matrix[i],0,100*sizeof(int));         }         i = j = 0;         index = 1;         while(index <= n*n){             while(matrix[i][j] == 0 && j < n)                 matrix[i][j ++] = index ++;             j --;             i ++;               while(matrix[i][j] == 0 && i < n)                 matrix[i++][j] = index ++;             i --;             j --;               while(matrix[i][j] == 0 && j >= 0)                 matrix[i][j --] = index ++;             j ++;             i --;               while(matrix[i][j] == 0 && i >= 0)                 matrix[i --][j] = index ++;             i ++;             j ++;         }         for(i=x-1; i<x-1+m; i++){             for(j=y-1; j<y-1+m; j++){                 cout<<matrix[i][j]<<' ';             }             cout<<endl;         }     }     return 0; } 3。 一个页面有两个广告位,现有四个广告需要展示,实现一个算法输出需要展示的两个广告 要求: a.输出的两个广告不能相同; b.多次调用输出的四个广告的概率为:1:2:3:4 (4个广告用整形1-4来表示) c.进阶:是否存在通用解,n个广告,概率为p1:p2:...:pn 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include <string.h> #include <iostream> #include <stdlib.h> #include <time.h> #include<vector>   using namespace std;     int gen(int n) {  // 在 [1, n] 区间等概率的选个 1 个随机数     int res = 0;     for(int i = 1; i <= n; i++) {         if((rand() % i + 1) == i) {  // 产生一个 [1, i] 区间的随机数             res = i;         }     }     return res; }   int sum[4]={0}; vector<int> save; vector<int> a;   void solve() {  // num: 广告数     int len = a.size();     int pos1;     int pos2;     if(!save.empty()){         pos1 = save.back();         pos2 = gen(len);     }else{         pos1 = gen(len);         pos2 = gen(len);         if(a[pos1 - 1] == a[pos2 - 1])             save.push_back(pos1);     }     while(a[pos1 - 1] == a[pos2 - 1]){         save.push_back(pos2);         pos2 = gen(len);     }     if(!save.empty())         save.pop_back();       sum[a[pos1 - 1]-1]++;     sum[a[pos2 - 1]-1]++;     cout << a[pos1 - 1] << ", " << a[pos2 - 1] << endl; }     int main() {     for(int i = 1; i <= 4; i++) {         for(int j = 0; j < i; j++)             a.push_back(i);     }     srand((unsigned)time(0));     for(int i = 0; i < 10000; i++)         solve();     for(int i=0;i<4;i++){         cout<<sum[i]<<' ';     } } 2018.09.05 阿里飞猪 面试岗位 JAVA开发工程师 面试体验 面试官中午打的电话,简单问了问项目,可能是希望我去实习,这样稳妥一点 2018.09.06 阿里飞猪 面试岗位 JAVA开发工程师 面试体验 HR姐姐打电话过来问我的情况,整个过程没有压力面,感觉还是挺开心的 面试问题 为什么会选择阿里巴巴? 平时有什么爱好? 想在哪个城市工作? 在项目中收获是什么?协作中出现过什么问题么? 未来的规划是什么? 2018.09.06 快手 面试岗位 JAVA开发工程师 面试体验 现场面试,结果还是只有一面,估计悬啦,和面试官讨论了很久算法题,过程就是我先去做然后面试官不断提示,到最后优化的地方自己思路还是卡住了 面试问题 给出二叉树的节点数,构造一颗二叉树,要求树中所有节点要么有两个子节点,要么没有子节点,把所有这样的树存到一个List中 给出一个链表,链表中有val,next和random,其中random指针会随机指向任意一个链表中的节点,问如何拷贝这样一个链表 synchronized了解么,和可重入锁的区别是什么?synchronized底层是怎么实现的?锁的种类有什么? 2018.09.08-09 微策略 面试岗位 开发工程师 面试体验 我参加的是微策略的提前批沙龙,感觉做的很好,第一天是企业介绍和群体面试,玩了很多游戏,第二天是正式的面试,有两轮技术面和一轮final面试,如果面试的不好可能一轮就结束了,微策略公司让我觉得比较好的地方在于地处杭州,生活压力相对会小,同时保持了外企不加班的风格,还有就是作为美国的企业杭州是第二大开发总部,会有很多技术性的工作,和一些外企只把测试和技术支持放到国内是有区别的,感谢提供了两天的酒店住宿和往返路费报销,面试题目不可透漏,希望有更多同学去体验~~ 2018.09.10 智者四海——知乎 笔试岗位 后台开发工程师 笔试题目 5道选择题,3道简答题和3道算法题,整体难度不大 2018.09.11 图森未来 面试岗位 全栈开发工程师 面试体验 第一面主要是面了两道算法题,第二道题没想清楚,第二面是从项目和工程的角度来面试的,主要看我的知识面和能力吧,总体体验还挺好的,也是第一次面试全栈开发的岗位,和面试官讨论了一下如何理解全栈工程师的,为什么图森会有这样的岗位招聘 面试题目 给出一个只包含abc的字符串,找出其中按照abc三个字母顺序可以匹配的子序列数量,比如abcc可以匹配2个abc 给出一个树,每条路径都是1的权重,遍历完成树上所有节点后最小要走的路径是多少 如何理解全栈,对于50,50的现象 HTTP状态码都有什么 如果不使用锁如何既保障性能又保障准确性 如果只有5分钟,数据库会过来100万访问量,怎么处理 2018.09.13 腾讯 面试岗位 后台开发工程师 面试体验 没想到之前腾讯的面试进度变成GM/面委会之后果真回退成复试了,,,这还能回退,这次还是复试,加上这次已经四次了,这次没有做题问了很多C++的知识,被问的很晕 面试题目 讲项目 双向链表如何转二叉搜索树 C++多态底层是怎么实现的 sleep能到微妙级么,为什么 MySQL都有什么引擎,区别是什么? MySQL主从是如何同步的 new是函数么,可以被重载么 linux为什么要分内核态和用户态 IPC通信方式,哪种系统资源消耗最少 有三个桶,分别能装10升,7升,3升油,现在10升的桶装满,怎么能倒出来两个5升油 2018.09.15 宜信 面试岗位 后台开发工程师 面试体验 一共两面,第一面面试不太好,很久不刷算法题了,很常见的题被问得很蒙,第二面问了很多简单的算法题,整体回答的还可以 面试题目 求二叉树中两个节点的最近公共祖先节点 用HashMap和ArrayList设计一个Set,要求实现add,delete,random函数 2018.09.15 网易游戏雷火 笔试岗位 平台研发工程师 笔试体验 其他的笔试没怎么写过体验,网易游戏的体验感还挺强,因为要去现场笔试,人挨着人,每一列都是不同的岗位,卷子也不一样,确实没办法抄袭,我去的那场卷子发的比较慢,定的是14:00-17:00笔试,但是卷子发了有半个小时,不过时间也向后延长了,题目是前60道题为不定项选择和填空,一道题一分,只要不是标准答案就没有分,2道简单题各8分,2道编程题各12分,总分100分 笔试题目 前60道都是大学考试里的那种题目,没有复习的话很杂很难做 简答题1:有A,B,C,D四个奖,每个观众可以抽奖三次,以抽到的最大奖为结果,从大到小为ABCD,要求最后抽到奖的概率为a%,b%,c%,d%,写一下如何实现 简单题2:给出一个数独,要求写一下如何将空位填满 编程题1:有a-j的布尔变量 (1) 要求实现输入一个公式字符串,其中包含& | ! ( )这五个符号,同时输入a-j的布尔值数组,输出公式的计算结果,例如: 复制代码 1 2 输入字符串 a&(b|!c) 和数组 [true,false,true] 输出false (2) 请统计有多少个个变量改变了bool值同时对整个公式没影响 编程题2:给出一个数组,代表高度,求出来水坑的空间大小 题目详细情况 2018.09.19 网易游戏雷火 面试岗位 平台研发工程师 面试体验 电话面试,面试官非常随和,而且经常笑意满满,让我感觉通不过电话打得也挺开心的,哈哈,问了很多工程上的问题,基础的内容并没有特别多 面试题目 如何设计登录功能 如果传输json如何让服务端知道 MySQL的联合索引,如何查看执行流程调优 了解node和typescript么 redis有哪些数据结构,可以用在哪些场景下 2018.09.20 字节跳动 笔试岗位 后台开发工程师 笔试体验 题目挺难的,5道题只AC了2道,估计够呛有面试机会 2018.09.21 网易游戏雷火 面试岗位 平台研发工程师 面试体验 面试的部门主要是写nodejs的,问的问题也基本都和js有关系,没有问算法题,主要是在讨论js,看我js的水平,然而我并没有准备,所以很多答的并不理想和准确 面试问题 如果让你自己实现vue-router怎么做 Promise知道么,如何保证3个Promise按顺序调用 解构是什么意思,对数组和对象解构的区别 CORS如何让客户端在发送的时候携带cookie 如何避免跨脚本攻击 2018.09.27 图森未来 面试岗位 全栈开发工程师 面试体验 在线写了两道算法题,第一个题很常规,第二个题就被难住了,然后问了问个人意愿想学什么包括想在哪儿工作 面试问题 第一题 给出一个只有正数的数组,和目标值target,找到大于target的连续子数组最小和 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 //a[] 34 564 -7 23 76 -565 324 768 23 67 //target = 234 //l,r sum = a[l] + ..+a[r] >= x && minSum   int query(int a[], int x){     if(a.length==0){         return 0;     }     int minSum=0;     int tmpSum=a[0];     int front=0;     int end=0;     boolean flag=true;     while(end<a.length){         if((tmpSum<minSum||flag) && tmpSum>=x){             flag=false;             minSum = tmpSum;             front++;             if(front>end){                 end++;             }             tmpSum -= a[front-1];         }else{             end++;             tmpsum += a[end];         }     }     return minSum; } 第二题 如果数组中存在负数呢? 构建二叉搜索树,每个节点上都是从头开始的子数组和,再遍历数组,去加搜索树上的值,找到符合条件的值,遍历时间要nlogn 2018.09.30 图森未来 面试岗位 全栈开发工程师 面试体验 主要问了问整体情况,还有一些知识点,讲了很多关于工作的内容 2018.10.13 字节跳动 面试岗位 后台开发工程师 面试体验 一共三轮面试,考察的问题并不是很难,每轮都有code,难度不大,但是对code的检查都很仔细 面试问题 反转链表 两个栈实现队列的push,pop和count功能 给出一个数组如 5,0,3,7,0,0,1 从0号下标位置出发,数组中的数表示能走到后面的最多位置,问走到最后一个位置最少需要几步 给出一个字符串,其中的字母在a-zA-Z范围内,找出字符串在a-zA-Z范围内没出现过的字母 上一题变形,如果现在数字的范围是0-2^32,给出一个300G的文件,里面每行都是一个数,内存只有1G,如何找到在数字范围内,没出现过的数 有一份儿日志文件,每行都是一个日期,有序排列,请找出20:00-22:00的日志行 redis的基本数据结构有哪些?如何备份? 数据库引擎有哪些?区别是什么? 讲一下三次握手和四次挥手,写一下SYN和ACK的值 进程间通信机制有哪些 Http协议有哪些状态码,跨域是怎么实现的
分享
7
原味笔面经

超级简历 APP

从简历直达offer,快人一步拿高薪

最新内推
35 名用户可以帮你内推
16 名用户可以帮你内推
13 名用户可以帮你内推
10 名用户可以帮你内推
9 名用户可以帮你内推