• 面经搜集


    头条学长分享

    从开始面试 到现在已经大半年了 和大家分享一下研发岗的简历审查和面试考察点:

    一、研发岗呢 大家都还是希望要科班的学生(计算机 & 软件)的 , 如果不是科班的同学, 会关注项目经验和岗位的匹配程度, 以及学习能力和潜力 (是否有技术博客, 对知识点是否会主动深挖) 简历中关于项目的描述是会重点看的,如果对项目的背景,目标,结果有好的描述的(STAR原则:,即Situation(情景)、Task(任务)、Action(行动)和Result(结果)), 这样是会加分的,对项目有描述和技术架构的, 在后面面试的时候会重点考察技能,判断候选人在项目里的真实性和参与度。然后是大家写的技能树的部分,除了希望对技术的描述准确之外, 描述是否有体系性的思维也是非常重要的。

    二. 说完简历 然后说说面试时候的考察要点

    1. 计算机的基础知识 计算机四大专业课 数据结构 : 图、hashmap, 算法原理, 对时间复杂度和空间复杂度的推算 计算机网络 : 通信基本原理,如TCP/IP协议,三次握手四次挥手、TCP/UDP区别,DNS属于哪层协议 操作系统知识 : 进程和线程理解,IPC方式和原理 数据库相关概念 : 三范式, 事务 四大专业课之外(加分项) : 编程语言特性, 设计模式的了解
    2. 工程能力 编码能力 : 如实现一个多维数组的快排 (都是简单的算法题, leetcode难度为简单的那些) 架构能力 : 对技术选型理解, 对开源组件的解读
    3. 逻辑思维 一般是一些小的数学题,如概率论的小题目, 看反应能力
    4. 项目经验 业务理解 : 对项目的整体背景, 目标, 方案 , 结果的理解 (STAR原则) 遇到问题的解决思路 : 描述一两个难点, 如何克服
    5.  软素质
      • 1. 心态 : 对待问题是否会深究, 是否有较强的自驱力, 有虚心学习强者的心态
      • 2. 沟通 : 是否诚实, 不夸大, 表达流畅, 准确
      • 3. 抗压 : 不轻易放弃 (我一般会针对候选同学不是很熟悉的领域, 连续追问, 看是否主动思考, 持续思考, 不轻易放弃)

    以下内容来自njustlcx的头条面经

    作者:njustlcx
    链接:https://www.nowcoder.com/discuss/159228
    来源:牛客网

    Java有哪些常用的线程池

    之前还没来得及准备线程池,哭晕,直接回复不太了解,第一个问题就这么告终,实在有点过意不去。Java基础太薄弱了。

    哪些同步的方式,就是加锁

    用synchronized关键字加锁,还有分段锁。

    追问,怎么理解分段锁?

    之前只顾记概念了,没能好好理解。瞎胡说一通,说不是对整个数据段加锁,而是一段一段的加锁(面试官内心应该是奔溃的),性能比synchronized关键字好。

    追问,知道哪些数据结构是用分段锁的吗?

    回答只知道ConcurrentHashMap。

    追问,那它是怎么实现分段锁的,了解过吗?

    回答没有。

    除了这个还有没有别的数据结构用分段锁?

    回答不是很清楚。

    synchronized知道怎么用吗?

    之前没怎么用过,回答在方法或变量前面使用。面试官内心应该很崩溃了。

    知不知道锁的可重用是一个什么样的概念?

    这个真没了解过。

    数据库里面的索引了解吗,可以谈谈它的结构吗

    hash索引和B+树索引,如果查询单条记录的话,hash索引比较方便。查询多条记录的话B+树索引能够提高查询效率。

    追问:B+树和B树什么区别?

    回答:这个好像答反了,哭晕

    为什么使用索引查询会变快呢?

    回答:本身数据库的结构是按页存储,不同的页之间构成一个循环链表,页里面的记录也是单链表。如果不用索引并且数据量比较大的话,查询效率低。如果用B+树balabala,说的有点语无伦次。最主要原因还是对B+树没那么了解。

    知道聚簇索引吗?

    回答:聚簇索引也叫聚集索引。是以主键为索引的。

    追问:主键索引和普通的索引有什么区别

    回答:以主键索引查询没有回表的操作,普通索引的话好像没有回表的操作。

    追问:为什么主键索引就不需要回表呢,根本原因是啥?

    回答:好像是数据库里面是以主键存储的。面试官:大致是这个意思

    讲一下tcp三次握手四次挥手

    三次握手主要是为了通信双方建立一个可靠的通信信道。第一次握手balabala,第二次balabala,第三次balabala。

    四次挥手balabala

    追问:为什么握手要三次,改成两次行不行?

    回答:没理解面试官的意思,答偏了。直接说的两次握手的话接收端无法确认自己是不是发送成功,发送端是不是成功接收。

    追问:两次的话断开会有什么问题?

    我的回答还是建立在三次握手的基础之上来思考的,没有抛开三次握手的概念。

    算法题,二叉树的序列化与反序列化

    昨天基友刚答过这题,今天又来了。早上还瞄过一眼,感觉应该不会再出现吧,但没想到还是出现了。用的是前序遍历的方式对二叉树进行序列化,反序列化的时候感觉也挺顺利的,但后面执行出现了一个bug,好像是有个递归的出口没考虑到,网页上写代码又不像用IDE,还可以debug,一时半会没找到原因,期间还问了面试官StringBuilder在哪个包下。。。再加上遇到问题解决不了,有点紧张,卡了很久。最后让我回头再调试。还是不能太依赖于IDE,要学会在没有IDE的情况下写代码。

    问我有没有什么想问的

    我问了三个问题

    平时工作如果忙的话,怎么学习自己的东西

    会做技术分享,每个月都有人会做技术分享,一个组内,每个人按月份分享。学东西的话在工作中遇到一些问题,解决了也能够学到一些东西。

    怎么学习源码,有什么策略

    一般遇到问题会去源码那边跟一下,如果单纯学源码的话,最好按模块来看,架构是什么样子的。最好是能够跑起来,debug看一些数据。

    像我们在校学生,平时接触不到生产上的数据和业务场景,如何提升自己

    找实习是最好的,或者自己接项目,做老师的项目。

    以下内容来自小啾啾的小叽叽的头条面经

    作者:小啾啾的小叽叽
    链接:https://www.nowcoder.com/discuss/158930
    来源:牛客网

    一面

    1、一上来就是问项目,有意思的或者说是有难度的(项目简历上写了一堆,含金量都不高)?

    A:我就挑了个有意思,一个学校助手小程序,也不知道重点说什么,就把功能和实现方法说了,其实蛮 low 的。


    2、HTTP 请求方法?

    A:我说5个嘛(其实有8个),说到最后还忘了一个,尴尬。

    追问:Post 和 Put 的区别?

    A:只说了 POST 的作用,也是一知半解,没有说清楚。PUT 不知道,哎。


    3、Cookie 和 Session 的区别?

    A:说了一些基本的区别。

    追问:跨域问题?

    A:记得看过,结果也不知道说什么了,硬是说了 Session 共享。

    HashMap 和 HashTable 的区别?

    A:emmmmm... 不会 Java,只会 System.out.println()


    7、数据库索引结构了解吗?

    A:B+ 树,还有哈希

    追问:B+ 树和 B 树的区别?

    A:脑子里有 B+ 树结构,看到哪里说哪里

    追问:聚集索引?

    A:以主键为索引的索引,大概就记得这点。还挖坑说了非聚集索引,说到回表时被问为什么会回表,因为有非主键字段,然后额,有点说不清楚了。


    8、来做个题吧,二叉树的序列化和反序列化

    (Leetcode 原题)一开始还没搞明白啥意思,光前序或者中序或者后序是不唯一的,后来才明白就是字符串的编解码。

    要实现两个方法,中序 + 前序 或者 中序 + 后序能唯一确定一个二叉树,序列化就遍历结果相接,反序列化就倒推。

    面试官提示的时候还说了层序,我就默默的开始想怎么层序,面试官又提示用特殊字符节点代替空节点,emmmm,好吧,开始写吧。尴尬的是居然不知道咋层序了,知道是用列表存节点遍历,硬是写不好(太菜了)。自己越想越乱,而且耳麦里时不时嘈杂,脑子一片空白,乱了乱了。好不容易层序完,反层序又乱了,总之整个过程就很乱,写的时候还发现序列化的结果有问题(代替所有空节点,形成满二叉树,而我却写成了只把叶子节点替换了)。

    整个过程耗时一个小时,不知道面试官怎么这么有耐心的,尴尬,总之自己是真的菜。


    9、还有什么想问的吗?

    先问面试官的在哪个部门工作;字节某个产品的服务请求响应处理是不是按地区划分(其实我也不知道怎么问);怎么处理海量数据的(几万台主机的集群)

    作者:小啾啾的小叽叽
    链接:https://www.nowcoder.com/discuss/158930
    来源:牛客网

    6、难度比较大的项目?

    A:来来来,计量你来,毕竟你是永远结束不了的项目。乱说一通,就这样吧


    7、做题了,根据用户阅读文章的情况(article_id, user_id, ...)统计阅读量 Top5 的文章

    A:第一反应,map 来统计嘛,Python 里字典嘛,然后找统计数最大的五个嘛

    追问:程序跑的时候 map 在内存吧,内存很小咋办?

    A:redis,本身就是个 map,能存很多数据嘛(redis 也不清楚底层,也不知道咋存的)

    追问:从数据结构上优化?

    A:想了许久,额,五个变量存五个最大的。。。尴尬了,意识到想偏了,我想的居然成了找 TOP5 的 article_id,我怕不是个智障。要是要找也是找统计数,那样还是没有解决内存放不下 map。

    追问:你说的五个变量也可以,。。。

    A:被我打断了,说自己跑偏了。然后就莫名其妙的跑到了 TOP K 问题,最后我就以最大堆结束了这个尴尬的话题。

    追问:说一下建堆的逻辑?

    A:两种方法,balabalabala,嗯,就这样。

    一开始说是场景题,也不知道是场景题还是算法题,最后也没有写代码。


    8、下一题,滑动窗口,面经里有很多说过

    A:最后是要得到滑动窗口最大值集合,想了个方法,说了一通。

    追问:那你能实现一下吗?

    A:可以(其实我想说不能)。反反复复调整了几次代码结构,逻辑应该没问题,就让面试官看了(不用运行,因为题目也是面试官现场描述的,不然可能有问题),然后就给面试说了下详细思路。

    追问:你的算法复杂度怎么样?

    A:最差情况,数组倒序,复杂度 O(n^2),好弱。然后就结束了。


    9、你接触过哪些技术?

    A:也不知道说什么。SqlServer?Mysql?Mongodb?Django?Flask?。。。

    追问:你现在在关注什么技术?

    A:Docker、redis、。。。尴尬,我在学什么,好弱。

    以下来自yy要加油的头条面经

    链接:https://www.nowcoder.com/discuss/158034

    来源:牛客网

    岗位:后台研发
    时间:一个小时
    1.自我介绍
    2.介绍一下自己做的比较好的一个项目
    3.java中int和Integer的区别,为什么有了int还要有设计Integer
    4.java中hashmap的实现原理,讲解一下哈希函数
    5.手写算法:判断一个数是否为二叉树的路径节点值之和
    6.操作系统中线程和进程的区别
    • 一个进程是不是可以创建无限数量的线程
    • 线程的数量会受到什么限制
    • 线程在内存中会占用什么资源
    7. udp和tcp的区别
    • 讲解udp的校验和
    • 讲解tcp的校验和
    • tcp的四次挥手过程
    • 如果服务器中含有大量一直处于close_wait的tcp连接,是为什么?
    8.讲解算法:一个连连看小游戏(二维数组存储),如何判断两个点可以消去?时间复杂度?连线最多只有两个拐点,怎么判断? 
     

    以下来自T.G.的头条面经

    一面

    • 单链表的反转,不用递归的方法。

    • 有序数组存在某个值,查找这个值的下标,有则输出,无则输出-1

    • 说说你的项目

    • 我挑的CTF

    • 然后你说阿里巴巴的druid连接池对数据连接有安全,请问下为什么

    • 然后你是信安专业的么 -- 说下自己的经历

    • 你说你学Java的,静态变量的初始化和存在哪里说一下

    • Java并发相关,线程通信

    • 说下JVM中堆和栈的区别

    • tcp/ip了解么,说下tcp的三次和四次握手

    • tcp和udp的区别和各自的应用

    • http和https的区别,https加密的过程

    • Linux了解么,MySQL了解么,redis了解么

    • hash表中的冲突是什么产生的,用什么解决方法

    • 在信安方面自己做过最自豪的事情

    • 有什么问题想问我的

    附上我的简历,感觉面试官是围绕着我简历中写的来问的,所以结合简历来看问题比较实际点吧。

    https://tugohost.github.io/resume/

    以下来自SyndromePolynomial的头条面经

    来源:牛客网
     
    一面,比较基础
    1. 自我介绍
    2. 实习经历
    3. HashMap
    4. 堆排,建堆的时间复杂度,O(n),为什么是这个,我忘了公式怎么推的了
    5. 完全二叉树和满二叉树的概念和区别
    6. 数据库:事务的概念,索引,B+树讲了一下。可能我回答的太不规范,然后也说了自己忘了数据库的知识了,于是就没往下问
    7. TCP 和 UDP 的区别,为什么是3次握手,4次挥手。4次挥手就是为了等待由一方还没传完,才有四次。
    8. 编程题:建堆过程
    9. 编程题:最小栈:在O(1)的时间复杂度内返回栈的最小元素。思路:两个栈,一个栈模拟普通的push、pop,getMin() 操作,一个栈用于存储最小值序列。
    10. ArrayList和LinkedList的区别

    二面:
    1. JUC听过吗,java.util.concurrent的缩写。。。哭了,我说没听过,能不能不要什么都用缩写啊。。。。
    2. 知道哪些垃圾回收器,CMS的优势在哪。。。哎,真的是看过就忘啊。。。。
    3. 不可变类,机制,实现原理。完全不知道。
    4. 红黑树的特性,面试官说红黑树不是二叉搜索树,我怀疑人生了。
    5. 编程题:数组中除了两个数,其他树都出现偶数次,找出这两个只出现一次的数。二面我就答上来这一道题,哭惹
    6. 编程题:二叉树转双端链表,半个小时没写出来,,,
    哎,,自己真是太弱了啊,太弱了
    TALK IS CHEAP, SHOW ME THE CODE
  • 相关阅读:
    千百撸
    迅捷PDF转换器(在线)
    request不能接受前端传来的参数的问题
    新买的orico蓝牙usb连接器使用方法与驱动
    win8.1下右下角出现大小写切换状态显示框解决方案
    idea tomcat 热部署方法
    set方法在set传入值时报空指针异常,直接设置定值即可
    eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结
    GNS3 jungle newsfeed 隐藏
    解决 sr 的端口占用问题
  • 原文地址:https://www.cnblogs.com/greatLong/p/10562418.html
Copyright © 2020-2023  润新知