牛客面试心得之五味杂陈

编程入门 行业动态 更新时间:2024-10-11 09:27:06

牛客面试<a href=https://www.elefans.com/category/jswz/34/1769167.html style=心得之五味杂陈"/>

牛客面试心得之五味杂陈

题1:

指针和引用的区别:
1.指针是一个实体,而引用仅是个别名。
2.引用必须被初始化,而指针不必。
3.引用只能在定义时被初始化一次,之后不可变;指针可以改变所指的对象;
4.可以有const指针但是没有const引用。
5.不存在指向空值的引用,但是存在指向空值的指针,即引用不能为空,指针可以为空;
6."sizeof"引用得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(是指向的变量或对象的地址)的大小。
7.指针和引用的自增(++)运算意义不一样;指针自增指向下一个地址,而引用是对变量本身的值的增加。
8.程序为指针变量分配内存区域,而引用不需要分配内存区域;
9.指针可以有多级,但是引用只能是一级,例如**p是合法的,但int &&a是不合法的。
10.指针和引用作为函数参数进行传递时也不同。用指针传递参数,可以实现对实参进行改变的目的;在将引用作为函数参数进行传递时,实质上传递的是实参本身,而不是实参的一个拷贝,因此对形参的修改其实是对实参的修改。

题2:

将一个递归算法改为对应的非递归算法时,通常使用: 栈。
解:递归之所以可以采用非递归方法实现是因为可以用栈的方式
如果采用递归时,是由系统管理函数栈
而要写成非递归时必须由你自己来管理一个栈
递归的本质就是一个栈

题3:

输入若已经是排好序的(升序),下列排序算法最快的是
本来有序的话快排会退化到O(n^2),归并排序仍然是O(nlogn),插入排序是O(n),遍历完数组就行,不会进行往有序段插入元素的操作。

题4:

select、poll和epoll的区别

题5:

不属于linux创建文件的命令是:in
cat 有创建文件的功能,创建文件后,要以EOF或STOP结束

题6:

如果将固定块大小的文件系统中的块大小设置大一些,会造成:更好的磁盘吞吐量和更差的磁盘空间利用率。

题7:

在Linux编程中,与TCP套接字选项与nagle算法的开启和关闭有关?
当有一个TCP数据段不足MSS,比如要发送700Byte数据,MSS为1460Byte的情况。nagle算法延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段。也许有人会问,这有什么影响呢?没有太大的影响,总体上来说,这种措施能节省不必要的资源消耗。但是要发送的总体数据很小时,这种措施就是拖后腿了。比如,用户请求一个网页,大约十几KB的数据,TCP先发送了数个数据包,剩下几百字节一直不发送,要等到另一个RTT才发送,这时候前面发送数据的ACK已经返回了。这样的用户体验是很不好的。 所以,现在很多服务器都选择主动关闭nagle算法,因为带宽够大,资源消耗不是问题,速度反而是个大问题。
从上述描述中,禁用 nagle,实质就是不在延迟 TCP_NODELAY

题8:

Linux下两个进程可以同时打开同一个文件,结论:
1.两个进程中分别产生生成两个独立的fd
2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性
3.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
4.任何一个进程删除该文件时,另外一个进程不会立即出现读写失败
5.两个进程可以分别读取文件的不同部分而不会相互影响
6.一个进程对文件长度和内容的修改另外一个进程可以立即感知。

题9:

ARP协议实现的功能是:
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

题10:

关于回滚段的使用:
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚事务的信息。一个事务只能使用一个回滚端来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。回滚段的数量规划对于OLTP系统,存在大量的小事务处理,一般建议:数量多的小回滚段:每四个事务一个回滚段;每个回滚段不要超过十个事务。对于批处理,一般建议:少的大回滚段;每个事务一个回滚段。

题11:

给定一个正整数,计算它每一位数的平方和生成一个新的数字,重复这个过程,当生成的新数字等于1时,则认定该正整数为归一数字。
解题思路:使用快慢指针,如果在操作中,出现循环且相遇点不为1,则肯定不是归一数字。

import java.util.*public class Solution{public boolean isHappy(int n){//快慢指针法int fast=n,slow=n;do{slow=squareSum(slow);fast=squareSum(fast);fast=squareSum(fast);}while(slow!=fast)if(fast == 1)return true;else return false;}private int squareSum(int m){int squareSum = 0;while(m!=0){squareSum +=(m%10)*(m%10);m/=10;}return sqareSum;}
}

更多推荐

牛客面试心得之五味杂陈

本文发布于:2024-03-23 20:12:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742337.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:心得

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!