后端开发工程师[Java]-商业产品技术职位 [社招-一面]

  • 面试介绍自己
  • 八股文 经典的一些
  • 线程之间的同步及机制 有哪些种类 以及区别 CountDownLatch CyclicBarrier Semaphore LockSupport
  • synchronizedReentrantLock实现和区别,jvm层的字节码等等(回答的不是很好)
  • 线上服务某些pod cpu过高怎么排查,负载不均匀是什么问题,经典Linux场景题,回答差不多就行(top jstatck arthas dump等 )
  • MySQL的三个日志文件 binlog redolog undolog 分别是什么作用,这个问题隐藏的mvvc原理呀,等深入的问题,回答不太好(redo log日志保证事务的持久性,使用undo log日志保证事务的原子性。binlog 做从库或者中间件的数据来源,以及保证数据库的一致性
  • 项目使用了队列Kafka说一下你们为什么用,一直Kafka的优点,你们消费者群组怎么设置,如何防止重复消费,分区的目的是啥?创建Topic如何将分区放置到不同Broker。(我其实之前用的Redis,后来领导买了Kafka我就改了,你要问我为啥,领导让用啥用啥,对了,还问你Redis队列构建,数据补偿,有什么优化措施,这点很怕问zookeeper,还好没问,不过高版本Kafka舍弃了zookeeper,改为了KRaft,好像更麻烦了)
  • 看你用了不少Redis,熟悉结构吧,一堆瞎编(看过一点源码),然后就是redis大key怎么处理(其实就是减小单个key大小,可以根据属性拆分,亦可以拆成不同部分,关键在于降低一个key的大小)
  • 热点key定义,如何缓存热点key,这点就要说下缓存常见问题,缓存穿透、缓存击穿等等,面试反问是不是可以做二级 三级缓存,是的,可以在redis做一个,以及jvm使用hashmap等类似的缓存工具做一个
  • redis 还有什么使用吗 就是分布式锁之类的了,实现基于k8s部署的自动雪花算法机器中心以及数据中心维护,心跳
  • 做道题吧,如下 由于他那个飞书(打不开代码框),就让我说下思路,这题一看就是第一个思路双指针,不过做的时候真不一定十分钟ac
//输入:head = [1,2,3,4]
//输出:[1,4,2,3] 
//
// 示例 2: 
//
// 
//
// 
//输入:head = [1,2,3,4,5]
//输出:[1,5,2,4,3] 
//
// 
//
// 提示: 
//
// 
// 链表的长度范围为 [1, 5 * 10⁴] 
// 1 <= node.val <= 1000 
// 
//



//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public void reorderList(ListNode head) {
        if (head == null || head.next == null) {
            return;
        }
        //快慢指针找到中间节点
        ListNode slow = head;
        ListNode fast = head;
        while (fast.next != null && fast.next.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        //反转后半部分链表
        ListNode pre = null;
        ListNode cur = slow.next;
        slow.next = null;
        while (cur != null) {
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        //合并两个链表
        ListNode p1 = head;
        ListNode p2 = pre;
        while (p1 != null && p2 != null) {
            ListNode next1 = p1.next;
            ListNode next2 = p2.next;
            p1.next = p2;
            p2.next = next1;
            p1 = next1;
            p2 = next2;
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)
  • 咱们平常排序比较多,说下快排思想,java的快排呢,时间复杂度多少,什么时候快排并不好用,堆排序呢,时间复杂度,java中有吗,对于n个数取Top m ,应该使用什么,时间复杂度(脑残了,说成,应该是,介绍下堆排序,其实使用PriorityQueue<Integer> queue = new PriorityQueue<>(n);默认小顶队, 大顶堆 PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);

  • 然后就是反问,45分钟左右,主要是代码编辑器打不开,省时间,估计没有后续。

#字节##字节面试##面经##社招#
全部评论
几年经验啊
点赞 回复 分享
发布于 2024-07-18 11:42 上海

相关推荐

“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便有段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25&nbsp;-&nbsp;3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special&nbsp;Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
11
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务