📜  微软面试经历 |设置 173(校园内)(1)

📅  最后修改于: 2023-12-03 15:09:53.459000             🧑  作者: Mango

微软面试经历 | 设置 173(校园内)

介绍

本文将分享作者在微软校园内进行的一次面试经历,包括面试环节和面试题目等内容。通过此篇文章,读者将更加了解微软公司的面试流程以及参加面试所需的准备工作。

面试环节

作者进行的是面向大学生的校园招聘面试,面试环节共分为以下几个部分:

  1. 笔试:笔试内容主要是编程题目和选择题目,并且需要用VC++编程语言实现对应的答案。
  2. 技术面试:技术面试主要是向面试官展示个人的技术能力和技术水平,需要回答一系列的技术问题和算法问题。
  3. HR面试:HR面试主要是了解面试者的个人素质、职业规划、团队协作能力等等。
面试题目

以下是作者在面试中遇到的部分面试题目:

  1. 有一条n个节点的链表,将链表从中间分成两部分,并将其翻转。例如,对于链表1→2→3→4→5,结果应为1→2→3→5→4。
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseBetween(ListNode* head, int m, int n) {
            ListNode* new_head = new ListNode(0);
            new_head->next = head;
            ListNode* pre = new_head;
            
            for(int i = 0; i < m-1; i++) pre = pre->next;
            ListNode* cur = pre->next;
            ListNode* tail = cur;
        
            for(int i = m; i <= n; i++){
                ListNode* c_next = cur->next;
                cur->next = pre->next;
                pre->next = cur;
                cur = c_next;
            }
            
            tail->next = cur;
            return new_head->next;
    }
  1. 有两个长度分别为m和n的有序数组A和B,求这两个数组的中位数。要求算法的时间复杂度为O(log(m+n))。
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int n1 = nums1.size(), n2 = nums2.size();
        if(n1 < n2) return findMedianSortedArrays(nums2, nums1);
        int low = 0, high = n2<<1;
        while(low <= high){
            int mid2 = (low + high) >> 1;
            int mid1 = n1 + n2 - mid2;
            double L1 = (mid1 == 0) ? INT_MIN : nums1[(mid1-1)/2];
            double R1 = (mid1 == n1*2) ? INT_MAX : nums1[mid1/2];
            double L2 = (mid2 == 0) ? INT_MIN : nums2[(mid2-1)/2];
            double R2 = (mid2 == n2*2) ? INT_MAX : nums2[mid2/2];
            if(L1 > R2) low = mid2 + 1;
            else if(L2 > R1) high = mid2 - 1;
            else return (max(L1, L2) +  min(R1, R2)) / 2.0;
        }
        return -1;
    }
总结

通过此次面试经历,我对微软公司的行业文化和工作环境有了更深入的了解。在将来的职业生涯中,我也会努力提升自己的技术水平和学习能力,为和微软众多优秀的工程师一起工作做好准备。