腾讯测开(一面)
1. 自我介绍
2. 聊简历
3. 拥堵控制和流量控制
4. 进程通信? (信号,信号量,消息队列,共享内存)
5. 什么是消息?
6. leftjoin 和 rightjoin的区别?
7. 手撕代码 输入任意一个整数n,推算当前日期前n天或者后n天日期,编程用unix时间按照s推算,不能使用库函数。
许愿二面
#include<bits/stdc++.h> #define MAXVAL 100005 using namespace std; #define DAY (24*60*60) #define YEAR 365 int MONTH[12] = {31, 28, 31, 30, 31, 30, 31, 31 ,30, 31 ,30,31}; bool isLeapYear(long year) { return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0); } string dateOfday(int n) { time_t t = time(0); int dayNum = t/DAY + n; string year,month,day; int cnt = 0; //1970 bool flag = false; // 默认非闰年 string ans; while(dayNum>366) { if(isLeapYear(1970+cnt)) dayNum -= 1; dayNum -= 365; cnt++; } if (!isLeapYear(1970+cnt)) flag = true; if(dayNum == 365 && !flag) cnt++; // 非闰年,365天,加一年 year = to_string(1970+cnt); if(flag) MONTH[1] = 29; for(cnt = 1; cnt<=12 && dayNum>0; ++cnt) { dayNum -= MONTH[cnt-1]; } month = to_string(cnt-1); day = to_string(dayNum + MONTH[cnt-2]); ans = year+"-"+month+"-"+day; return ans; } int main(int argc, char const *argv[]) { int n; cin>>n; cout<<dateOfday(n); }