腾讯后台开发一面面经

8.22晚开始的面试,其实我确实没有怎么准备QAQ,比较菜
上来先是做了2个代码题,然后由于我之前很少用牛客网的代码编辑器做过题,刷leetcode习惯了,代码倒是特别快的写完了,但是一直特别蠢的在搞编译错误问题,后来刚搞好,我的网断了!是的,你没听错,网整个断掉了!
然后,面试官给我打来了电话,开始了漫长的电话面试

我忽然发现,我快忘完了,因为面试完我就放飞了

hashmap 设计原理,树化的阈值为什么为8
设计模式,随口说了一句单例模式,聊了好久好久单例的doubleCheck,中间涉及到加锁和类加载过程
数据库分库分表,分库分表的概念,中间会出情景题,比如给你一个QQ号表,怎么拆分,比如如何提高单库的写入
我的项目都是用Java技术栈搞的嘛,感觉就直接跳过了😂,开始问我在实习期间做的工作
感觉和转正答辩有点像,会问你为什么做这件事,然后你如果提过的结论数据也会问的比较具体
我的工作涉及到了RPC,rabbitmq啥的,然后就一直在聊这两个
TCP 三次握手,TCP的报文内容,流量控制,拥赛控制
Linux查看内存CPU命令
虚拟内存的实现原理,分页分段

虽然问题少,但是真的聊的时间不短的
最后还问了转语言意愿和工作地点问题
我的天,真的记不清了问什么了。。。。,总之面试风格就是抓住一个点一直问一直问,不停的考验你的逻辑,中间会设计具体的情景

2个代码题也不难
单链表和双链表的翻转
写的比较乱,但是主要除去创建和打印部分,还是挺简单的,切成C++的编译器看了看,创建和打印直接都给写好的函数,好吧,我要苦逼的自己一个个写,就显得多了些

import java.util.Scanner;

public class Main {
    static void print(Node head) {
        while (head != null) {
            System.out.print(head.val + " ");
            head = head.next;
        }
        System.out.println();
    }

    static void print1(DNode head) {
        while (head != null) {
            System.out.print(head.val + " ");
            head = head.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Node head = new Node(-1);
        Node p = head;
        int val;
        //创建单链表
        for (int i = 0; i < n; i++) {
            val = in.nextInt();
            Node newNode = new Node(val);
            p.next = newNode;
            p = p.next;
        }
        //反转单链表
        Node pre = null;
        Node q = head.next;
        Node next;
        while (q != null) {
            next = q.next;
            q.next = pre;
            pre = q;
            q = next;
        }
        head.next = pre;
        int m = in.nextInt();
        DNode Dhead = new DNode(-1);
        DNode pp = Dhead;
        //创建双链表
        for (int i = 0; i < m; i++) {
            val = in.nextInt();
            DNode newNode = new DNode(val);
            pp.next = newNode;
            newNode.pre = pp;
            pp = pp.next;
        }
       //反转双链表
        DNode ppre = null;
        DNode pq = Dhead.next;
        DNode pnext;
        while (pq != null) {
            pnext = pq.next;
            pq.next = ppre;
            pq.pre = pnext;
            ppre = pq;
            pq = pnext;
        }
        Dhead.next = ppre;
        print(head.next);
        print1(Dhead.next);
    }
}

class Node {
    int val;
    Node next;

    Node(int v) {
        this.val = v;
    }
}

class DNode {
    int val;
    DNode next;
    DNode pre;

    DNode(int v) {
        this.val = v;
    }
}

统计一个有符号整数二进制1的个数

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int val = in.nextInt();
        int cnt = 0;
        while(val!=0){         
                ++cnt;
            val = val & (val-1);//直接统计1的部分,会将0直接跳过
        }
        System.out.println(cnt);
    }
}

蹲个二面吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值