这题确实简单,基本就是剑指offer原题。小菜鸡生平第一次AK。先说两道编程:
1.字符串转数字,这个题比较坑的一点就是32位有效数字,我看他那个用例以为是把有效位输出就行,结果就死活66.7,后来我输出INT_MAX奇迹般的就AC了。我贴的是剑指offer的答案,大同小异,这个也能AC。
class Solution {
public:
int StrToInt(string str) {
if(str.size() == 0)return 0;
int i = 0;
int sign = 1;
while(i < str.size() && str[i] == ' ')i++;
if(str[i] == '-'){
sign = -1;
i++;
}
else if(str[i] == '+'){
sign = 1;
i++;
}
int ans = 0;
for(; i < str.size(); i++){
if(isdigit(str[i])){
ans = ans * 10 + (str[i]-'0');
}else return 0;
//就是这个
if(ans > INT_MAX) return sign == 1 ? INT_MAX : INT_MIN;
}
return sign*ans;
}
};
2.带头结点的链表翻转,我面试就在翻转链表上被坑了一把,所以我心有余悸啊!
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead == NULL)return NULL;
if(pHead->next == NULL)return pHead;
ListNode* pre = NULL;
ListNode* cur = pHead;
while(cur != NULL){
ListNode* temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
};
选择题部分不是很容易,记不太清了,把几个写下来:
1.linux,write发送数据返回n,代表什么?
这题我不是很记得了选错了。
正确答案是:
-
本地已发送n个字节 已发送,但不保证对方收到
-
函数原型:ssize_t write(int fd , const void *buf ,size_t count);
函数只是写入本地缓冲区,返回的n是写入缓冲区的数量。
2.同一进程下的线程共享
- 进程代码段
- 进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、
- 进程打开的文件描述符、
- 信号的处理器、
- 进程的当前目录和
- 进程用户ID与进程组ID
线程的独享:
- 线程ID
- 寄存器组的值
- 线程的堆栈
- 错误返回码
- 线程的信号屏蔽码
3.静态数据初始化在全局区
4.输入www.XX.com 一定不用的协议:
https://blog.youkuaiyun.com/qq_34827674/article/details/104909394
我以为UDP不使用,实际UDP是传输DNS……但是我觉得也用到了ICMP。另两个是ARP和DNS,希望大家解答……
扩展:
浏览器输入www.baidu.com后,网络过程
事件顺序:
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址 (详细介绍DNS)-通过网关出去
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。
涉及到的协议:
(1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务)
DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话,然后通过运输层TCP协议封装数据包,在TCP协议基础上进行传输。
(2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输),HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作。
(3)网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址)为数据包选择路由,IP协议进行主要工作,相邻结点的可靠传输,ARP协议将IP地址转成MAC地址。
简单理解: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
5.一次性加载n个树进行遍历,最合适的容器是:
链表,也就是list
还有一些继承类的题,相对简单。原题记不得了。