当前位置: 首页 > news >正文

【Golang开发面经】360(一轮游)

文章目录

  • 写在前面
  • 笔试
  • 一面
    • TCP 和 UDP 区别
    • UDP能可靠传输吗?
    • MYSQL的隔离等级
    • 左连接,右连接有什么区别?
    • JOIN的性能一定好吗?
    • 线程的通信方式?
    • 快排原理?堆排呢?
    • 算法:top k 问题

写在前面

这个公司估计是走个形式…

笔试

一面

TCP 和 UDP 区别

TCP 是可靠传输,面向连接,基于流,占用资源多,效率低。

UDP是尽最大努力交付,基于无连接,基于报文,UDP 占用系统资源较少,效率高。

UDP能可靠传输吗?

可以的,我们只需要仿照TCP的可靠传输机制就可以了,比如说设置ACK确认机制,一旦没有收到,或是收到三次上一个报文的ACK,我们就立即重传丢失的报文。再比如说设置滑动窗口来保证数据传输的安全性等等…

MYSQL的隔离等级

  • 未提交读(READ UNCOMMITTED):READ UNCOMMITTED 提供了事务之间最小限度的隔离。除了容易产生虚幻的读操作和不能重复的读操作外,处于这个隔离级的事务可以读到其他事务还没有提交的数据,如果这个事务使用其他事务不提交的变化作为计算的基础,然后那些未提交的变化被它们的父事务撤销,这就导致了大量的数据变化。
  • 提交读(READ COMMITTED):READ COMMITTED 隔离级别的安全性比 REPEATABLE READ 隔离级别的安全性要差。处于 READ COMMITTED 级别的事务可以看到其他事务对数据的修改。也就是说,在事务处理期间,如果其他事务修改了相应的表,那么同一个事务的多个 SELECT 语句可能返回不同的结果。
  • 可重复读(REPEATABLE READ):在可重复读在这一隔离级别上,事务不会被看成是一个序列。不过,当前正在执行事务的变化仍然不能被外部看到,也就是说,如果用户在另外一个事务中执行同条 SELECT 语句数次,结果总是相同的。(因为正在执行的事务所产生的数据变化不能被外部看到)。
  • 序列化(SERIALIZABLE):如果隔离级别为序列化,则用户之间通过一个接一个顺序地执行当前的事务,这种隔离级别提供了事务之间最大限度的隔离。

左连接,右连接有什么区别?

左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。
右连接:右连接是只要右边表中有记录,数据就能检索出来。

右连接与左连接相反,左连接A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有。右连接A INNER JOIN B,在A中也有,在B中也有的数据才能查询出来。

左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。右联接是左向外联接的反向联接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

JOIN的性能一定好吗?

  1. 小表在前可以提高sql执行效率。

  2. 尽量不要使用where语句。
    在这里插入图片描述

从上面例子可以看出,尽可能满足ON的条件,而少用Where的条件。从执行性能来看第二个显然更加省时。

  1. Inner join 是不分主从表的,结果是取两个表针对 On 条件相匹配的最小集。如果是很大的表,首先针对两张表做Where条件筛选,然后再做 Join。

线程的通信方式?

消息队列、内存共享、信号

快排原理?堆排呢?

快速排序实现的重点在于数组的拆分,通常我们将数组的第一个元素定义为比较元素,然后将数组中小于比较元素的数放到左边,将大于比较元素的放到右边,这样我们就将数组拆分成了左右两部分:小于比较元素的数组;大于比较元素的数组。我们再对这两个数组进行同样的拆分,直到拆分到不能再拆分,数组就自然而然地以升序排列了。

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余 n-1 个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。

算法:top k 问题

估计是不招人了,一面后一点消息也没有。。。

相关文章:

  • 都2022年了,你还不会在PyCharm中使用Git ?
  • 嵌入式操作系统浅谈
  • 算法面经小米篇
  • HTML+CSS大作业 使用html+css实现一个静态的汽车页面(含源码)
  • 软件工程毕业设计 SSM汽车故障报修管理系统(源码+论文)
  • 如何搭建一个vue项目
  • shiro与jwt前后端分离项目集成
  • web3 solidity 基础 ERC20 大白话搞懂
  • 《C++类中的基本常识》
  • JavaEE——File类
  • CANoe-如何模拟CAN总线网关通信(满满都是细节)
  • 请求转发与重定向
  • 如何使用OpenCV的随机森林(Python)
  • matlab神经网络预测数据,Matlab神经网络预测复数
  • 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • axios 和 cookie 的那些事
  • CentOS7 安装JDK
  • ES6语法详解(一)
  • github从入门到放弃(1)
  • Java编程基础24——递归练习
  • Java方法详解
  • java取消线程实例
  • LeetCode18.四数之和 JavaScript
  • nfs客户端进程变D,延伸linux的lock
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • VuePress 静态网站生成
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 机器学习学习笔记一
  • 记一次用 NodeJs 实现模拟登录的思路
  • 力扣(LeetCode)965
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 思否第一天
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ![CDATA[ ]] 是什么东东
  • #Linux(权限管理)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (Java)【深基9.例1】选举学生会
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .NET 依赖注入和配置系统
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .Net语言中的StringBuilder:入门到精通
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [BT]BUUCTF刷题第9天(3.27)
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [HDU 3555] Bomb [数位DP]