后端开发工程师[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分钟左右,主要是代码编辑器打不开,省时间,估计没有后续。

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

相关推荐

有两轮面试,可以线上但说至少有一轮要线下,我就直接去了线下参加,一次过全部面了。一面是两个面试官,一个问基础,一个问场景题。看起来没什么问题,但第一个面试官问得真的太太太基础了。上来第一个问题我就绷不住了,Java里有哪些基本类型,int有几个字节。大哥这种问题现在谁还问阿,那我只能现数,数少了一个他还不高兴了。后面还有一些其他的题,但就都是这种超级超级基础的,我是5年经验,这种问题我以前面实习都没遇到过!第一个面试官问完我感觉他就不太高兴,说实话我也很无语,你问一堆这种问题,这是能考察什么东西呢?问我SpringBoot解决跨域问题的那个类叫什么,我也是无语了,这种项目里配置一次就不会再改的,谁会去记类名阿?当时我也不是很想继续面下去了,但第二个面试官问的都是场景题,我个人觉得体验还比较不错,答得都挺愉快的。接着让我等一会,说要二面,部门技术经理过来面。二面也问了一些基础+场景,整体来说体验才正常了许多,虽然也有基础,但也不是真的一副大学生面试的模样,还是会问一些深入的东西。虽然第一个面试官给我感觉很不好(大哥是不是你自己就会这些简单的东西所以来问我阿),但后面两个面试官给我的体验都不错。最后就是HR面,问了下基本情况和期望薪资,结果说我期望太高了,有没有考虑涨幅的问题。我真的直接黑人问号???首先我的数字就在他们写的数字区间里,完全符合,也没有直接要非常高,其次我比上一份工作的经验是多了好几年的,并且之前是在杭州,那凭什么来广州还不能想拿一定的涨幅?而且前面把我喊过来,然后就因为我期望薪资比较高就没有后续了?是否有点太不专业了,给不起的话你的岗位描述可以别写那么高的。真的是纯纯浪费时间。
查看5道真题和解析
点赞 评论 收藏
分享
评论
11
14
分享
牛客网
牛客企业服务