网易两份凉拌面「面经」

一面

面试时间1.5h,快16:00时hr催我进去,开始30min时上机一道编程题,如下:

上机编程题:

为了评估某网站的用户转化率,我们需要对用户的访问行为进行分析,并建立用户行为模型。日志文件中已经记录了用户名、访问时间 以及 页面路径。

为了方便分析,日志文件中的 N 记录已经被解析成三个长度相同且长度都为 N 的数组,分别是:用户名 username,访问时间 timestamp 和 页面路径 website。第 i 记录意味着用户名是 username[i] 的用户在 timestamp[i] 的时候访问了路径为 website[i] 的页面。

我们需要找到用户访问网站时的信息 『共性行为路径』,也就是有最多的用户都 至少按某种次序访问过一次 的三个页面路径。需要注意的是,用户 可能不是连续访问 这三个路径的。

『共性行为路径』是一个 长度为 3 的页面路径列表,列表中的路径 不必不同,并且按照访问时间的先后升序排列。

如果有多个满足要求的答案,那么就请返回按字典序排列最小的那个。(页面路径列表 X 按字典序小于 Y 的前提条件是:X[0] < Y[0] 或 X[0] == Y[0] 且 (X[1] < Y[1] 或 X[1] == Y[1] 且 X[2] < Y[2]))

题目保证一个用户会至少访问 3 个路径一致的页面,并且一个用户不会在同一时间访问两个路径不同的页面。

示例:

输入:

username = ["joe","joe","joe","james","james","james","james","mary","mary","mary"],
timestamp = [1,2,3,4,5,6,7,8,9,10],
website = ["home","about","career","home","cart","maps","home","home","about","career"]

输出:

["home","about","career"]

解释:

由示例输入得到的记录如下:

["joe", 1, "home"]
["joe", 2, "about"]
["joe", 3, "career"]
["james", 4, "home"]
["james", 5, "cart"]
["james", 6, "maps"]
["james", 7, "home"]
["mary", 8, "home"]
["mary", 9, "about"]
["mary", 10, "career"]

有 2 用户至少访问过一次 ("home", "about", "career")。

有 1 个用户至少访问过一次 ("home", "cart", "maps")。

有 1 个用户至少访问过一次 ("home", "cart", "home")。

有 1 个用户至少访问过一次 ("home", "maps", "home")。

有 1 个用户至少访问过一次 ("cart", "maps", "home")。

30min后,面试官进来,看了一下我的代码,并将我的思路和面试官讲了一下,面试官提醒到只需长度为3的页面路径列表,所以还需对内部进行拆分统计一下。

然后进入业务环节:

1.简单进行自我介绍一下。

2.unordered_map的实现原理是什么?(数组 + 链表)

3.当哈希表容量很大甚至超限时,你会怎么处理呢?

4.unordered_map和map的区别?

5.c++11新特性,比如你代码里出现的auto以及智能指针这些。

6.AVL树的插入、删除、查询的时间复杂度。

7.Epoll的实现原理。

8.讲述一下内存的结构。

9.多线程下,它们使用了内存中哪些区域?

10.多线程有什么优势呢,可和多进程以及单进程相比。

11.Tcp和Udp各有什么劣势。

12.在游戏中,当我们使用Udp去支持很高的流量场景时,但又不想出现丢包的情况,你会怎么去处理呢?

算法:

1.TopK问题。

2.一个人可向上走2步或3步台阶,走到n阶时的方案数。

3.两个人丢硬币,丢到正面的人获胜,求先手获胜的概率。

反问:面试官在项目中负责哪一模块呢?

回答:主要还是负责后端代码的编码与维护的工作,其实涉及范围还是挺广的,所以要做的事情也很多,不止单一模块。

感受:面试开始的一道题弄得有些压力,读题都读了快5min,好在30min也把也题写完了,在之后面试官也是有意慢慢引导我,有时也会换一个场景让我去理解,所以整个面试过程比较舒服,压力也不会很大。

二面

二面时间不到1h,面试过程全程自闭,面试官一点都不友好,回家路上越想越不对劲,总感觉他想故意刁难我,整个人越想越气。

开局自我介绍没什么好说的,不懂得就直接说不懂,千万不要装懂!

1.如何解决对象的生命周期问题。

2.有两个线程,一个线程中有一个shared_ptr,一个线程中有一个weak_ptr,两个指针同时指向堆中的一个对象,当shared_ptr和对象解绑,对象是否会销毁。

3.如果对象销毁,如何通知含有weak_ptr的另一个线程,此时的另一个线程正在不断执行代码。

4.ordered_map相比unordered_map,有什么特点,从多个角度回答。

5.ordered_map使用的是红黑树,为什么不使用平衡二叉树呢。

6.ordered_map插入一个节点时,需要旋转几次。

7.unordered_map底层使用的数据结构是什么,如何解决哈希冲突呢。

8.内存对齐的作用是什么。

9.内存对齐除了寻址方便,还有什么其它的优势呢。

10.32位机器上,一次最多可以向内存中取多少个字节呢。

场景题:24点卡牌游戏,如果有很多客户端到来时,服务器上除了24点卡牌游戏之外,还有其它的计算消耗,请问如何去提高服务器的并发量并且减少计算资源的消耗呢?

算法题:24点卡牌游戏,给你[1,13]范围内的4个数字,4个数字顺序任意,4个数字之间还可以使用括号,请你判断能否由这4个数字使用加减乘除去构造24这个数字,可以返回true,不能返回false。

算法题时我说这似乎可以不使用括号达到一样的效果,面试官否认了,想了很长时间面试官提醒计算机是如何计算表达式的,我说使用后缀表达式,借着这个思路能再想一想,最后还是没有想出来该如何构造形成24。

感受:面试过程很难受,全程似乎不给我喘息的机会,你看上面问到的问题可能不是很难,但是他会一直追问,追问到你答不出来为止,这让我面试过程十分自闭,不知道这也是不是一种抗压行为的检测。然后算法题也没写出来,简单暴力穷举也直接被面试官否决了。

以上是我的经历分享感受,希望可以帮到准备去面试的小伙伴们,下面整理了一些大厂的面试题和JAVA进阶资料整理,全部都已打包好,均是免费分享的,等待爱学习的你,需要这些资料的朋友可以直接后台私信小编

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

亲爱的小伙伴们,有需要JAVA面试文档资料请点赞+转发,关注我后,私信我333就可以领取免费资料哦 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值