📅  最后修改于: 2023-12-03 15:09:53.459000             🧑  作者: Mango
本文将分享作者在微软校园内进行的一次面试经历,包括面试环节和面试题目等内容。通过此篇文章,读者将更加了解微软公司的面试流程以及参加面试所需的准备工作。
作者进行的是面向大学生的校园招聘面试,面试环节共分为以下几个部分:
以下是作者在面试中遇到的部分面试题目:
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;
}
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;
}
通过此次面试经历,我对微软公司的行业文化和工作环境有了更深入的了解。在将来的职业生涯中,我也会努力提升自己的技术水平和学习能力,为和微软众多优秀的工程师一起工作做好准备。