一面面试总结

1. 网络协议及端口号

HTTP(超文本传输协议):端口号80(非加密)和端口号443(加密,HTTPS)。
FTP(文件传输协议):端口号20(数据连接)和端口号21(控制连接)。
SMTP(简单邮件传输协议):端口号25。
POP3(邮局协议版本3):端口号110。
IMAP(互联网邮件访问协议):端口号143(非加密)和端口号993(加密,IMAPS)。
DNS(域名系统):端口号53。
SSH(安全外壳协议):端口号22。
Telnet(远程终端协议):端口号23。
SNMP(简单网络管理协议):端口号161(代理)和端口号162(陷阱)。
RDP(远程桌面协议):端口号3389。

2. Stinrg、StringBuffer、StringBuilder的区别

String、StringBuffer和StringBuilder是Java中用于处理字符串的类。它们之间的主要区别在于可变性和线程安全性。

  1. String:
  • String类是不可变的,一旦创建,就不能更改其值。
  • 如果需要对字符串进行频繁的修改操作(例如拼接、替换等),每次操作都会创建一个新的String对象,导致额外的内存开销。
  • String类适用于存储不需要修改的字符串,例如字符串常量或者不变的配置信息。
  1. StringBuffer:
  • StringBuffer类是可变的,可以对其进行添加、插入、删除和修改等操作,而不会创建新的对象。
  • StringBuffer是线程安全的,可以在多线程环境中使用,但是性能较StringBuilder稍差。
  • StringBuffer适用于在多线程环境中需要频繁修改字符串的情况,例如在处理并发请求时。
  1. StringBuilder:
  • StringBuilder类也是可变的,类似于StringBuffer,可以进行字符串的修改操作,但是不保证线程安全。

  • StringBuilder比StringBuffer的性能更好,因为不需要额外的线程同步机制。

  • StringBuilder适用于在单线程环境中需要频繁修改字符串的情况,例如字符串的拼接操作。
    总结:

  • 如果字符串不需要修改,使用String类。

  • 如果需要频繁修改字符串,并且在多线程环境中使用,使用StringBuffer类。

  • 如果需要频繁修改字符串,并且在单线程环境中使用,使用StringBuilder类。

3. @Autowired和@Resource区别

@Autowired:先byType再byName

@Resource:先byName再byType(当指定@Resource name属性时,只会byName)
详细:https://blog.csdn.net/m0_53125903/article/details/130000028?spm=1001.2014.3001.5501

4. 访问一个页面的过程

  1. 用户输入URL:用户在浏览器的地址栏中输入要访问的网页的URL(统一资源定位符)。
  2. DNS解析:浏览器将URL发送给DNS(域名系统)服务器,以获取与该URL关联的IP地址。DNS服务器将URL解析为对应的IP地址。
  3. 发起HTTP请求:浏览器使用解析到的IP地址,向Web服务器发送HTTP请求。HTTP请求中包含了请求类型(GET、POST等)、请求头、请求体等信息。
  4. 服务器处理请求:Web服务器接收到浏览器发送的HTTP请求后,根据请求的内容进行处理。这可能包括处理请求参数、查询数据库、执行业务逻辑等。
  5. 服务器返回响应:Web服务器生成HTTP响应,包含了响应头和响应体。响应头包含了响应状态码(如200表示成功、404表示未找到等)和其他元数据。响应体包含了服务器返回的HTML、CSS、JavaScript等页面内容。
  6. 浏览器渲染页面:浏览器接收到服务器返回的响应后,开始解析响应并渲染页面。它会解析HTML结构、加载CSS样式表、执行JavaScript代码,最终将页面内容显示在用户的浏览器中。
  7. 客户端渲染完成:当浏览器完成页面渲染后,用户就可以看到并与页面进行交互。页面中可能包含链接、表单、图片等元素,用户可以点击链接跳转到其他页面,提交表单数据或与页面上的交互元素进行交互。
    TCP建立连接三次握手及断开连接四次挥手。
    总结:复习不全面,基础底层了解少,见过的技术有时候想不起来,只是会用这个技术,并没有真正的去了解该技术是怎样实现的。

你可能感兴趣的:(面试,职场和发展)