首页 > 其他分享 >面试记录

面试记录

时间:2023-06-10 15:33:28浏览次数:52  
标签:http 请求 记录 python 面试 线程 https 报头

1.面向对象和面向过程的区别,面向对象的三个特性,并解释

2.C++和python的区别

编译型 解释型

C++是一种静态的语言,需要在编译时确定变量类型,代码段用大括号分割,语句结尾用分号,相比较,python是一种动态语言,可以在运行时确定变量类型,采用缩进标志代码块,语句结尾不需要有分号。内存管理:python有垃圾自动回收机制,使用垃圾自动收集器管理内存,c++需要程序员自己管理内存;

c++是编译型语言,python是解释型语言,二者分别为:

编译型语言是一次性地编译成机器码,所以可以脱离开发环境独立运行,而且通常运行效率较高;解释型语言每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行。但解释型语言有一个优势:跨平台比较容易,只需提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。参考
python是解释执行的,和物理机CPU之间多了解释器这层,而C++是编译执行的,直接就是机器码,编译的时候编译器又可以进行一些优化。因此在运行效率上,C++要远好于python

(解释器就是高级语言的转换器)解释器是一种翻译程序,是一种能够执行用其他计算机语言编写的程序的软件,例如python解释器,

编译和解释的区别:编译会将所有程序代码一次性转换为机器可以执行的指令,而解释是转换一行运行一行,边转换边执行。

3.http和https的区别

http中文名叫超文本传输协议,https中文名叫超文本传输安全协议,工作在应用层,规定了浏览器和服务器之间的通信规范,常采用TCP连接。

(1)前者以明文的方式传输消息,后者https就是http+ssl加密,与http相比能够提供对网站服务器的身份认证,保证数据传输的隐私和完整性。

(2)http协议默认端口号为80,https默认端口号为443。

(3)在具体传输方式与效率方面,http只需要进行三次握手与服务端进行连接即可发送数据,客户端和服务端之间总共交换3个包,而https除了TCP连接的三次握手还有ssl的9个包。

(4)https就是建立在ssl/tsl加密协议上的http,因此比http更消耗服务器资源

下图是https加密的工作原理

 

4.http请求的结构体是怎样的,method包括哪些

http请求包括:请求行 首部行(请求报头) 空行和请求正文(消息主体) 四个部分

请求行的内容:请求行包含请求方法,URL和协议版本,中间以空格隔开,URL的作用就是把请求定位到服务端要处理请求的地址,协议版本是HTTP的版本号,请求方法包括get post等。

首部行内容及格式:首部行为请求行增加了一些附加信息,由“名: 值”对组成,名和值之间使用冒号+空格连接。

首部行有以下几种报头:普通报头、请求报头、响应报头、实体报头。

 

 

空行是位于首部行和请求正文中间的,标志着首部行的结束。

请求正文:一般用于http的post方法,通过实体报头规定消息主体的格式和内容。

以下为http请求报文结构:

 

以下为http响应报文结构:状态行、响应头、空行、响应正文

状态行包括协议版本、状态码和原因短语

响应头包括搭建服务器的软件、发送响应的时间、响应数据的格式等信息

响应正文就是响应的数据

 

 

5.说一下知道的排序算法以及他们的复杂度和稳定性

6.某个项目中登录功能是怎么实现的

7.递归和for循环哪个效率更高

for循环效率高。递归涉及到在栈中分配空间来保存参数、返回的地址和临时变量,向栈中压入数据和弹出数据都会花费时间,并且如果递归的层数太深还可能出现栈溢出。此外,递归会涉及到大量重复计算,影响性能。

8.链表与数组的区别

存储结构:数组在内存中连续,使用数组前要事先规定数组大小,数组元素实际被存储在堆中,但其引用变量存储在栈中;链表在堆上分配内存,采用动态内存分配的方式,支持动态增加和删除元素,需要注意内存泄漏。

访问效率方面:数组在内存中顺序存储,可以通过下标访问,访问效率高;链表在内存中不连续,只能通过遍历来访问,访问效率低。

插入和删除:数组插入和删除需要移动相应节点后的所有元素,链表的插入删除非常简单,不需要移动节点,只需要改变相关节点中的后继节点指针即可,和节点实际存储位置无关。

9.sleep wait  join yield 哪个方法会释放锁?-->wait  join, join底层调用了wait. wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态

线程有五种状态:新建new,就绪runnable,运行runing,阻塞blocked,死亡dead

阻塞状态是指 线程因为某种原因需要放弃CPU使用权,暂停或运行,阻塞时,线程不能进入排序队列,只有当阻塞的原因消除后,线程才转化为就绪状态并转入就绪队列中等待,当再次获得时间片后从上次中止的地方继续运行。从阻塞状态只能进入到就绪状态。

线程阻塞的原因有三大类:1.A线程需要锁,但该锁被其他线程占用,A线程进入到等待锁的阻塞队列,这种情况只有当某个线程释放该锁的时候才能唤醒A线程,notify不会唤醒该线程;

  2.正在占用锁的线程调用了wait()方法,就会进入wait阻塞队列,只有obj.notify()通知该线程后,才会唤醒这个队列中的线程,普通的释放锁操作不能唤醒该线程;

  3.正在执行中的线程调用了join()  sleep()或IO就会进入另一个线程阻塞队列,睡眠时间到或者IO结束,线程才会继续进入到就绪状态。join()作用是阻塞主线程。当线程调用另外一个线程的join方法时,当前线程就会进入阻塞状态。直到另外一个线程执行完毕,当前线程才会由阻塞状态转为就绪状态。sleep方法不释放锁。

yield方法,会使当前线程放弃使用CPU时间片,把机会让给相同或者具有更高优先级的线程。但是当前线程不会阻塞,而是直接进入就绪状态,随时获得CPU时间片后再次执行。可以看出yield方法是不释放锁资源的。

 

标签:http,请求,记录,python,面试,线程,https,报头
From: https://www.cnblogs.com/yz-lucky77/p/17467950.html

相关文章

  • 代码随想录算法训练营第四天|24. 两两交换链表中的节点 , 19.删除链表的倒数第N个节点
    24.两两交换链表中的节点 个人感觉这个不太难,刚开始打算用步进值为2,来搞,但是没有想到链表应该是怎么样的,原来可以直接用: 1cur=cur->next->next 学到了,这是我自己写的代码:1ListNode*MyLinkedList::swapPairs(ListNode*head)2{3ListNode*dummyHead=new......
  • 编译原理面试题
    1、请解释编译器前端和后端的区别,并描述它们在编译过程中的职责。编译器是将高级程序语言转换为目标机器语言的软件工具。它通常由两个主要组件组成:前端和后端。编译器前端:编译器前端主要负责源代码的分析和处理。它包括以下阶段:词法分析(LexicalAnalysis):将源代码分解成标记......
  • 2.6万字的软件测试高频面试题(2023全新版),内容包括:面试技巧,HR面试、基础面试、JMeter面
    1.求职面试准备(记得收藏保存转发给你的朋友)1.1面试技巧......
  • 华为OD机试题(A&B卷)真题抽中记录文档(更新到 6 月 10 日)
    @目录本篇博客的价值华为OD机试题⭐⭐......
  • 个人第二次冲刺记录
    根据老师在课上给与我们的建议,我们重新设计了软件的结构和功能,因此在第二次冲刺时我遇到了很多修改上的困难,但我也和团队成员合作解决,以下是我们遇到的困难和解决方法,我们第二次冲刺也在围绕着这些问题开始并在最后解决问题:多个设备的互联问题:由于智能家居系统需要连接多个设备,设......
  • 个人第一次冲刺记录
    我们选择的题目是智能家居系统,为做出此系统,我将分为以下几部分写出我为做出此系统而做出的努力:确定需求:我和团队成员一起讨论和确定智能家居系统的需求和功能。学习技术:我学习并掌握智能家居系统领域相关技术和知识,掌握常用的智能设备协议和通信协议等。设计架构:根据系统需求,我和......
  • C++面试八股文:指针占用多少个字节?
    C++面试八股文:指针占用多少个字节?某日小二参加XXX科技公司的C++工程师开发岗位4面:面试官:memset、memcpy和strcpy的区别是什么?小二:memset用于将一块内存设置为特定的值,memcpy用于将一块内存从一个位置复制到另一个位置,strcpy用于将一个字符串从一个位置复制到另一个位......
  • C++面试八股文:了解sizeof操作符吗?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第10面:面试官:了解sizeof操作符吗?二师兄:略微了解(不就是求大小的嘛。。)面试官:请讲以下如何使用sizeof?二师兄:sizeof主要是求变量或者类型的大小。直接使用sizeof(type)或sizeof(var)即可。面试官:嗯。sizeof(int*)、sizeof(int**)......
  • #yyds干货盘点# LeetCode程序员面试金典:单词接龙 II
    题目:按字典 wordList完成从单词beginWord到单词endWord转化,一个表示此过程的转换序列是形式上像beginWord->s1->s2->...->sk这样的单词序列,并满足:每对相邻的单词之间仅有单个字母不同。转换过程中的每个单词si(1<=i<=k)必须是字典 wordList中的单词。注意,be......
  • #yyds干货盘点# LeetCode程序员面试金典:快乐数
    1.简述:编写一个算法来判断一个数n是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为 1,那么这个数就是快乐数。如果n是快乐数就返回t......