大三生不满美团实习,转投头条居然还找出六条通关心得,Java岗

[复制链接]
查看9103 | 回复0 | 2021-11-9 14:43:57 | 显示全部楼层 |阅读模式
大三生不满美团实习,转投头条居然还找出六条通关心得,Java岗-1.jpg
7 |/ Y7 Y4 ~7 w# A$ D, `+ @
今天给大家分享的是一位朋友去今日头条的面试历程(一位本科大三的科班生,目前在美团实习)。

3 F  E3 R8 K5 ]7 D! Z% g
以下是他的一面历程,一共分为6个环节:

2 p# [: ~9 F" V* d
7 m6 y7 }9 F3 i- A. N4 l
大三生不满美团实习,转投头条居然还找出六条通关心得,Java岗-2.jpg
& D& }8 Q2 ~0 ~- l- i2 J0 p
如果你想攀登高峰,切莫把彩虹当作梯子。
* _9 F7 F0 O/ C
1、自我介绍
* t1 T( }8 V9 M& K: \9 K) D: T4 u! Q1 `9 I- m8 B0 g! _7 ]2 k
对自己的情况做了有一个简单的自我介绍后,面试官问了一句对工作的语言有没有要求(因为本人是Java技术栈)。

% M- h  c6 n( |2 ~( t
如何自我介绍,如何写简历,这些都是提前准备好的。千万不要等着临场头脑发热,最好是能背一遍,但是不要面试官觉得你在背。
! E: Y# H5 s' _7 u1 p
2、聊项目( W* K) p) P" i6 B7 M% x

. ^* `. P7 k1 X8 |3 m
面试官:说说你最熟悉的项目,用了哪些技术栈,项目中遇到了什么挑战?
' @* q* m+ _; [( R2 R/ q
然后,选了一个最近在做的项目,介绍了整个项目使用了哪些技术栈,业务整体是怎么样的,遇到过某某问题,后面通过某某手段解决了。

# a0 D2 o3 D5 m/ D
然后,面试官对项目进行提了一些技术问题,问题如下。

! a, O- f% j8 y' M! G
为何需要去中心化?

# m; p: s2 J0 x+ f/ J2 G
你觉得微服务的优缺点有哪些?

3 ]% y3 i/ a! s+ `
去中心化的好处?
1 L0 C8 A+ G6 y5 x! q: X5 s! L
分布式如何保证一致性?

5 [! ]$ f9 m% }' S: a, n
单点故障,不可用,数据丢失后,如何保证一致性?

2 d6 L  P% `1 A; i; s0 \! l
为何选择使用RocketMQ?MQ选型
1 D7 Y# k2 I9 ?$ K8 z6 v6 y
你说小规模项目应用RocketMQ较好,为什么?为什么觉得跟Java技术栈比较契合?
" J7 f$ i3 R! [3 e
Kafka和RocketMQ的比较?选型讨论了很久,消息的量级和MQ的延迟的关系

' x/ q5 }& ~6 c1 D6 r
MQ如何保证消息不丢失?
* S* M( E% H' @  g9 Q8 Z! k
MQ如何保证消息的幂等性?不重复消费
& o  Y* L3 J9 l6 m, `9 z& t3 ]
多个节点通过MQ发消息如何保证消息的顺序?
+ z% N: `' k# {4 d
问了个向量时钟有了解吗?

" G. N1 P: s+ {, k* h3 V# \% x
简单说说一个java源文件到垃圾回收的整个过程
# h* T9 ^3 l; N% \' C
如何选择垃圾收集器?

; I0 d6 F; I( a. s! U
说说JVM中的栈与线程的关系
+ E8 }$ W9 n# a/ l
熟悉哪些JVM问题排查工具?

) K' y# A& }8 m: V
3、操作系统
: U% {7 ?2 v' x( k  H" f6 z6 c" u; r! ~. C4 x& x
关于操作系统,一共就问了四个问题:

) Y* L' X% d# {/ u' O0 R& F+ E* p
熟悉进程调度策略吗?
( b  m" e: E5 v0 C3 ?
说说CFS?
) b& j; j6 |! @* `6 z
友好度是啥?

& l  v. X/ y% X! X6 A4 |8 o
如何计算出来的?
. W/ e7 a$ {7 K" d. z6 l
4、计算机网络! P0 D- h1 w+ C
( H! M" X6 G" O! J! w2 `" w
TCP可靠传输由哪些东西来保证的?

: L) h$ K$ q# b4 u; @
除了三次握手、四次挥手,数据传输过程中如何保证可靠传输?

' I1 L, F7 N  T  ?7 e8 T% D8 U
通信最基本的要求是什么?(大概面试官想提示我,我没太get到)

; p; ~5 a) X7 }* k3 l, @
点对点通信的要求?基本特点?(非常难以get到面试官想问我什么)
/ u5 [9 Q% ~" C. y3 J
后来知道想问TCP的ARQ、滑动窗口、拥塞控制、流量控制、超时重传等等。

( `# r5 m/ A' K5、手写SQL
, C9 K0 J/ B- E+ {9 I* t  K$ ]$ Z
( e" c0 t0 S7 x0 y
表1:学生表student(no{学号}, name{名字}) 表2:成绩表grade(no{学号}, grade{成绩}, subject{科目}) 给定一个学生姓名,求该学生的各科的成绩:
5 p+ G6 k/ y3 X/ y' _% S
这里之前写的时候保留的是no和grade两列,面试官就问为啥要no,后面知道原来他想要把subject也放进结果里。。。
8 C! j/ c6 F# L/ @' D
6、算法% e3 J$ V) j5 k$ U- Z
" C1 }& N% d( v
单链表反转

" F1 D  _# j1 Q8 ?: [8 E
输入一个链表,反转链表后,输出新链表的表头。
) Q3 B8 i7 {" T1 v( d0 }2 C
输入:{1,2,3}
, ?7 Z" i0 q6 D/ [$ ?. V0 p7 o% o- v
输出:{3,2,1}

6 ~2 L4 Z8 f% k/ s0 z( G, H$ ?
这个题有两种解法,请看代码:

2 g( J2 C" R" J/ F. e/ u1 [//第一种方法是:非递归方法/*struct ListNode { int val; struct ListNode *next; ListNode(int x) :   val(x), next(NULL) { }};*/class Solution {public:    ListNode* ReverseList(ListNode* pHead) {          if(pHead==NULL) return NULL;//注意程序鲁棒性                ListNode* pNode=pHead;//当前指针        ListNode* pReverseHead=NULL;//新链表的头指针        ListNode* pPrev=NULL;//当前指针的前一个结点                while(pNode!=NULL){//当前结点不为空时才执行            ListNode* pNext=pNode->next;//链断开之前一定要保存断开位置后边的结点                        if(pNext==NULL)//当pNext为空时,说明当前结点为尾节点                pReverseHead=pNode;             pNode->next=pPrev;//指针反转            pPrev=pNode;            pNode=pNext;        }        return pReverseHead;    }}//第二种方法是:递归方法 /**struct ListNode { int val; struct ListNode *next; ListNode(int x) :   val(x), next(NULL) { }};*/class Solution {public:    ListNode* ReverseList(ListNode* pHead) {  //如果链表为空或者链表中只有一个元素         if(pHead==NULL||pHead->next==NULL) return pHead;          //先反转后面的链表,走到链表的末端结点        ListNode* pReverseNode=ReverseList(pHead->next);                //再将当前节点设置为后面节点的后续节点        pHead->next->next=pHead;        pHead->next=NULL;                return pReverseNode;            }};
递归的方法其实是非常巧的,它利用递归走到链表的末端,然后再更新每一个node的next 值 ,实现链表的反转。而newhead的值没有发生改变,为该链表的最后一个结点,所以,反转后,我们可以得到新链表的head。

. n) M% G$ o# _2 n
注意关于链表问题的常见注意点的思考:

+ T  x* U& [0 I. g$ o
1、如果输入的头结点是NULL,或者整个链表只有一个结点的时候
6 E9 y* _+ D0 G* S
2、链表断裂的考虑

; h6 G7 g; T9 L- E总结$ Y4 I8 M5 V+ o& d5 I

  w% ]' l! M8 `! @8 |
看完上面的面试,你觉得难吗?

6 L0 j0 p7 e$ A" n* c5 J0 ~
以上题目答案在我的面试小抄里都可以找到,所以,再文章中就没必要再贴答案了。
1 W8 u$ j" I2 Z0 Z5 V/ o; q: a
面试小抄地址:
/ I1 p7 K: I, y3 n
https://www.toutiao.com/a6949133703809401358/?channel=&source=search_tab
+ ]! P7 r. S- x4 J* h/ s( y3 `8 j
2 v# G& C% W2 ~: `$ V% a! ~

+ x% t2 s( D4 W% C5 o* A
0 D1 I( q6 n4 ?+ r
. o' h, ~" `6 b

; I6 g9 G# L* c1 W' Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12

金钱

0

收听

0

听众
性别
保密

新手上路

金钱
12 元