第一次面试经历-某公司后端研发

笔试

笔试部分是做了10道题目, 主要是类似于LeetCode上的题. 也包含了一些设计题目, 比如说怎么设计一个爬虫系统的去重. 在面试的时候答题纸也被送过来, 面试官会选择里面一个问题(主要是没做出来的)来问你.

题目我会记录下来放到GitHub上.

一面

一面聊的时间很长, 总共70分钟左右.

总共问了三个大题吧. 发现在面试的过程中, 有一些问题是一开始没有思考到的, 在交流想法的时候发现漏掉了. 可能是没有一开始去设计测试用例, 或者去思考当前的可能的场景或者情况.

  1. 60分钟 限制用户访问不能超过5次以上
  2. hashmap
  3. 目录树打印

一开始做了一个设计的题目. 场景是一些关键操作, 要对用户的访问次数或者访问时间做出限制. 给出的例子是要设计一个函数或者功能, 限制单一用户在60分钟之内不能访问超过5词以上. 类似实现一个函数, 输入是用户的 uid. 返回一个布尔值用于表示是否应该 block 掉该次访问.

当时一开始的想法是把记录存在一个数据库表里, 类似<访问时间, uid, 状态(block/OK)>

然后每次去数据库查, 获取到当前的60分钟之内的数据, 大于5条就选择block掉.

后来觉得放在MySQL这种数据库中太慢, 因为这个函数肯定是一个热点, 在每次接受请求的时候都会调用. 可以放在Redis这种内存数据库中.

此外, 由于这种规则的限制只考虑比如 x 分钟之内的记录. 可以只保存一定时间之内的访问记录, 超时就做一个失效的处理.

后来要求用一种数据结构实现, 在内存中直接计算.

发现可以做一个HashMap的形式, 里面保存的是 uid和一个表示访问记录的队列.这个队列里保存一些过去的访问记录. 可以通过时间和数量来选择最大的容量.

比如说我现在需要考虑过去60分钟的5次数据. 我可以选择容量是5, 最多容纳五条.我直接选取队列中最早插入的(时间距离现在最久)看这条记录时间是否比当前时间早60分钟. 如果超过了就说明最近60分钟的访问次数少于5次. 如果没超过说明需求被block.

在每次接受请求的时候都需要把访问记录放到这个队列中, 也就是会退出一个最早插入的, 再在队尾加一个当前的访问记录.

在手写代码的时候发现没有思考冷启动的问题, 需要判断如果队列不满, 就应该直接放入数据.这也是考虑欠妥当的地方.

第二个问题, 面试官问我是否了解 HashMap . 其实不很了解, 没看过源代码, 看过一些文章.说了一下链表过长会树化,有开放寻址和链表法解决Hash冲突的问题. 然后问我map里桶的数组保存的是什么, 我说是链表的头结点. 面试之后看了一下源码分析的文章, 其实map里就是保存了一个 Entry的数组, 每个Entry有指向下一个Entry的引用, 也就是一种链表的数组. 好像还问我什么时候扩容, 这个我答的不对. 后来看过是在map的大小超过阈值之后, 且发生了Hash冲突,才扩容. 在没超过阈值, 但是某个链表长度过长的时候发生树化.

第三个问题是问类似一个Linux的目录树, 怎么从[父目录, 子目录]这种信息构建出来.

提供的数据[[A,B],[B,C],[C,D],[D,E]] 这种, 构建出类似 Linux tree命令的结果.

需要考虑怎么构建树形结构, 还要考虑怎么能从树输出结果.

  1. 构建树, 把所有没出现过的父目录作为森林里的一个树的root节点. 如果出现过就把子目录放到对应的位置.
  2. 合并森林, 寻找一个只出现只出现在树根的节点, 表示全局的根目录. 然后不断的合并, 如果图是连通的. 那么肯定能合并成一个多叉树
  3. 对树做一个先序遍历, 输出结果. 递归的时候要传进去层数, 以便控制缩进

二面

二面感觉面的不好, 很多问题都没回答上来.

  1. 问数组与链表的区别 寻址访问和插入删除的一种trade off
  2. 问怎么能实现一个 插入删除搜索都是o(1)的数据结构 好像hashmap可以符合 但是还问有没有其他的数据结构
  3. 做一个题 寻找数组中两个数的和 最接近指定数字. 提示可以排序
  4. 问编程语言 用过哪些 了解哪些

原文地址:https://www.cnblogs.com/yylu/p/9337512.html

时间: 2024-10-17 04:30:32

第一次面试经历-某公司后端研发的相关文章

第一次面试经历(hr面)

经过介绍,我有幸去到一家国际背景的广告公司面试前端开发实习生.收到的邮件是复试通知,看来我已经跳过了第一轮面试. 来到hr请我进了一个小间坐下里填求职书,里面有各种个人信息,有兴趣爱好,有工作经历,以及离开上一任公司原因. 过了大概15分钟,hr进来直接面试我,我之前不知道是什么面,以为是技术面,搞到我很紧张.因为我的性格很内向,所以和不熟的人聊天会说得很少. hr先简单介绍了下她自己,然后突然让我做一下自我介绍,我一下子大脑空白,hr也跟我说没关系,想到什么说什么.这给了我一点缓冲的时间,我介

记第一次面试经历

笔试 传值和传引用的区别? 静态链接库和动态链接库的区别?以及运行时在程序内存空间的位置? 死锁的产生条件及写一个简单的死锁程序 二叉树分层遍历算法手写 实现@别人的功能,@后可加命令和发送的消息,设计高效的结构去处理命令和消息,并写代码实现 第一面 技术 你个人的亮点 吸引面试官的点在哪里? 针对我的简历,提了一些问题 个人博客里写的是什么?有什么亮点? KNN 决策树 支持向量机的简单问题 主要是公式 二叉树分层遍历算法手写 手写选择排序算法 职业规划讲一下 linux命令 查找指定文件的路

三年半 Java 后端鹅厂面试经历

经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言. 都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构.网络.框架.数据库和分布式.所以OS这块吃的亏比较大. 一面基础技术面 电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单.

浅谈Java后端开发工程师腾讯面试经历分享总结

最近一段时间考虑到换工作,打算整理一下网络上曾经面试者分享的的面试经历并结合自己以往的面试经历和经验,帮助大家获取到互联网大厂的入职通知书,也就是入职offer. 本文整理网络面试者和本人的面试经历和面试经验分享给大家,主要出于个人层面上做个自我总结.沉淀一下面试经历以及让一些有能力的面试者了解一些互联网大厂企业面试过程,如果有人向往这些大厂企业,告知面试者需要做哪些准备从而能够如愿以偿的获取到互联网大厂企业的入职通知书. 面试做好提前准备 一谈到面试这个问题,很多人都会心里一紧,尤其是一些生性

分享2019年10月和11月的面试经历

本人工作三年左右,坐标魔都浦东,技术一般,之前工作的项目组用的技术栈有点老,之前待过两家公司都是外包,本人从去年年底到面试前一直在 自学,最近选择跳槽.这里写一下简历的个人技能,项目不方便放出来 前端:JQuery.Bootstrap 数据库:MySQL.Oracle 框架:Spring MVC.Spring.SpringBoot等 中间件:Redis.RabbitMQ 微服务:Spring Cloud.Spring Cloud Alibaba 搜索引擎:Elasticsearch 本人目前面试

2020Android春招面试经历(已拿今日头条28Koffer)

一声叹息 从去年9月3号,到今年3月20号,耗时6个月多的找工作经历终于是画上圆满的句号了,近200个日日夜夜的酸甜苦辣想必裸辞的亲尝者都能体会得到,下面想来复盘或者说总结一下这段经历.但不管怎么总结,核心还是那一句话:一定要充分的准备!!! 简历准备阶段 大家都知道,学历就是个敲门砖,所以对于一些背景比较好的同学,我就不告诉你怎么写简历了??自由发挥吧 1. 那么对于一些学历背景一般般的同学要怎么让自己的简历更有亮点呢? 建议先分为两种,第一种是在校期间没有什么实习经验的同学,那简历中可以着重

CSDN日报20170320——《Java 程序员的面试经历和题库》

[程序人生]Java 程序员的面试经历和题库 作者:nuaazhaofeng 最近打算换城市了,受不了北京的雾霾了,所以准备逃离啦.所以一直在面试中,整理了下最近遇到的一些面试题,供大家参考.其中会包含一些面试的小经验,如果您是面霸,希望能给予指导.自己不是大牛,如果您是大牛,也可以忽略之.我面试的岗位是Java后端开发工程师. [Python]7行Python代码的人脸识别 作者:半吊子全栈工匠 随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域众多,图像识别中的

unity3d 我的面试经历

昨天在上海的一家公司面试成功了 这是我第一次面试,也是我的第一份工作 先上我的简历给大家参考下吧 个人简历 个人信息: 姓 名: 廖旭升         学 历: 无 民 族: 汉               专 业: 无 性 别: 男               所在地:江苏张家港 年 龄: 21岁            电 话: 1515********* E - mail:[email protected]              QQ:6087537 求职意向: Unity3D手游客户

记第一次面试

想着这个大三暑假在合肥本地找个实习,就在实习僧投了好几家 Java 实习生,可等了三天都没反应..然后听说 Boss 直聘比较好,于是又上 Boss 直聘投了两家.可信息全部有去无回.. 不过说来运气也好,周五的时候,Boss 直聘上就有位面试官主动联系到我,招 Python 爬虫工程师,真是意外之喜. 然后今天电话里聊了聊,也没做啥准备,下午就进行了一次简单的面试.感觉答的还挺好的,面试官问的也简单,(远没网上各 BAT 面经那么恐怖)下面我简单地回顾一下,就只写我还记得的了: 什么是 OOP