中兴面试

1.指针介绍,指针与数组的区别
指针相对于一个变量,也有类型,但是和变量不同的是,它的值是一个地址,我们可以通过指针去访问地址所对应的内容。.

数组可以用指针访问的方式来操作,但是数组是同一数据类型元素的集合,指针存放的是其他变量的地址。

2.memcpy与strncpy的区别
1.都是用来拷贝字符串的,字符串是以\0结尾的。使用strncpy操作时,遇到\0时就会认为结束了,后面将全部都以\0填充。

2.使用memcpy时,不会出现这种情况。

3.关于计算sizeof()
char a[10]
sizeof(a)=10

char=‘agbsdj’
sizeof(a)=7

int *b
sizeof(b)=4

char *a
sizeof(a)=4
不管是何种类型的指针,大小均为4字节

4.进程间通讯的方式
进程之间的信息传递不可能通过变量或其它数据结构直接进行,只能通过进程间通信来完成。

  1. 文件和记录锁定。避免两个进程同时要求访问同一共享资源,容易引起访问和操作混乱。互斥性保障。

2)管道。(亲缘进程间的通信,比如父进程与子进程之间的通信)调用fork创建自己的一个子进程后

3)FIFO命名管道。(先进先出的队列,数据只能单向流动

4)消息队列。(不同进程通过消息形式把数据流发给任意进程)可以为消息安排优先级顺序

5)信号灯。(用于多进程间的同步,协调对共享存储段的存取)协调多个同步的进程
作为进程间通讯的一种方法,它不是用于交换大批数据,而用于多进程之间的同步(协调对共享存储段的存取)。

6)共享内存通过信号灯实现存储共享。
通过信号灯实现存储共享(类似“红灯停、绿灯行”)

5.进程与线程的区别
根本区别,进程是系统资源分配的基本单位,线程是任务调度和执行的基本单位。

进程之间的切换开销比线程大。线程可以看作轻量级进程
在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

系统为进程分配内存空间,线程只能共享同一进程的资源

包含关系:一个进程可以有多个线程。

6.线程使用存在什么问题?数据同步的方式?
1.安全性的问题
2.线程切换有性能损耗
3.死锁(互相想要对方资源,却不肯释放自己的资源)、活锁(相互礼让)、饥饿锁(不断有人插队)

1.软件同步(通过时间戳实现)
2.硬件同步(选择时间源,校正时钟源)
3.自同步(输出数据的规律性)

7.常用的shell脚本命令有哪些?shell里面获取用户名的指令是什么?查询内核?
mkdir / cd /pwd /find /echo /kill /ls /sudo命令

“sudo”(super user do)命令:允许授权用户执行超级用户或者其它用户的命令

. uname
“uname”命令就是Unix Name的简写。显示机器名,操作系统和内核的详细信息。

uname -a /cat /proc/version 查看Linux内核版本命令

“chmod”命令就是改变文件的模式位

“touch”命令代表了将文件的访问和修改时间更新为当前时间。

id

whoami

echo “$USER”

8.数据库指令

9.项目框架

10.常用的数据结构

数组、链表、栈、队列、散列表、二叉树‘、堆、跳表、图、Tire树

11.TCP/IP架构、5层:物理层、数据链路层、网络层(IP)、传输层(TCP)、应用层

12.TCP的建立和断开过程,画流程图
3次握手、4挥手
在这里插入图片描述
https://blog.csdn.net/qq_42045868/article/details/99457915在这里插入图片描述
13.指针释放和使用的注意事项
1.用malloc,realloc、calloc等动态分配的内存必须用free()释放。动态申请内存之后必须要释放。
2.指向二维数组的指针不是一个普通的指针int *p,而应该是一个数组指针
int a[3][4]={};

 int *p=a;                  //错

 int (*p)[4]=a;           //对

3.定义指针时,同时初始化为NULL
使用完成后,同时赋值为NULL

4.32位系统中,所有指针长度都是4,不管是什么类型

5.数组名作为形参传惨时,实际传递值不是整个数组,而是数组的首元素的首地址(也就是整个数组的首地址)。所以在子函数内部,传进来的数组名就等于是一个指向数组首元素首地址的指针。sizeof算出来就是4.

数组作为函数形参时,[]里的数字是可有可无的。为什么?因为数组名做形参传递的实际只是个指针,根本没有数组长度这个信息。
和数组作为函数形参是一样的,这就好像指针访问数组元素和数组访问数组元素一样
结构体因为自身太大,所以传参应该用指针来传
普通变量(包括结构体)传递函数参数,实际上就是赋值
数组(包括指针)传递函数参数,实际上传递的是地址,数组传递的是数组首元素的地址。

14.socket的工作机制(套接字)
socket其实是一组接口,它的位置在应用层与其他层之间。
socket也叫套接字,本质是编程接口,封装了TCP/IP。用socket写服务端和客户端
根据socket接口函数调用编程,socket隐藏了tcp、udp协议,所以编程遵循了tcp、udp协议的标准通信是应用程序和应用程序之间的通信,port端口
在这里插入图片描述
在这里插入图片描述
底层原理:三次握手四次挥手。一般服务端先断开连接,是为了节省资源。

15.移位求1个数比如6,转化成2进制求多少个1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值