好未来go秋招实习转正岗一面0907(加上算法45分钟)

简历上两个项目选一个帮助最大的有代表性的项目介绍一下

讲了一下API项目的大致的一个流畅

除了mysql学过其他数据库了吗

了解过oracle,MongoDB

关系型数据sql和非关系型数据库nosql有什么区别

mysql一般是行列存储数值,nosql一般是k,v类型的(面试官提示还有文档类型的)

其实最主要的是前者满足ACID,后者满足BASE(面试时候没打出来)

优化一个sql语句大概有一个什么过程呢

先通过慢查询进行分析,查询到哪里需要优化,看对应字段是添加一个单字段索引还是联合索引,另外提到了分表分库(面试的时候想不到太多)

如果是要让你去设计一个数据库,你在数据库这个设计方面就需要考虑哪些问题?

先根据实际业务需求进行字段和表的统计,每个表的字段符合数据库的范式,同时对每个表尽可能少的减少冗余,对于一些字段也要进行分析,提前添加上索引,以及一些主键设置和唯一索引,同时比如字符串类型的也要提前设置对应的大小,避免内存浪费。

什么是覆盖索引?

刚刚发现答错了,答成索引下推的内容了

覆盖索引:其实应该是是查询的字段在联合索引里面,通过非聚簇索引查找的时候子树内容包含需要查的内容(本身叶子节点存放的是主键,如果不包含对应字段,需要找到主键回表查询,覆盖索引避免了回表)

比如 select age from user where age=20; 在此处age是有索引的,此时就会形成覆盖索引

索引下推:select * from user where zipcode=xxx, birthdate=xxx;此时(zipcode, birthdate)是联合索引如果没有索引下推该语句会先查找到符合zip的内容然后对每一条符合的主键进行回表查询,但你索引下推之后只需要在符合zip的内容下查找符合bir的主键然后进行回表查询;

如何判断一个链表有环,复杂度是多少

一个快指针一个慢值。然后快指针每次next next,然后用然后慢指针next,他如果相遇的话,证明这个链表是有还的。如果没有相遇的话,那他就没有环。,o(n)

如何理解hash呢

哈希表的话它是一个kv类型的。它是在1.7之前,它是一个链表加上数组加链表的形式。但在1.8以后他他添加了一个红黑树,他只有他当他一个链表长度大于8,然后数组长度大于64的时候,它会转化成一个红黑数。如果它当它那个链表如果小于6的话,它又会从红黑数转化成一个链表的形式。它哈西提供了一些一些添加一些增删改查的一些操作。但是它是线程不安全的。如果线程安全的有两个hashtable,但它但这个现在都已经不怎么用了,基本上就被淘汰了。还有一个concurrentHashMap

这个是如果如果要用到哈希,如果要用到哈希的话,要而且还要保证线程安全的话,就可以用这个。然后它是它扩容的话,是它它是一个扩容因数是0.75。当它比如它初始化的话,它是十六,如果达到12的话,它会进行扩容。扩容的话每次是扩容两倍,1.8之后是变成两倍。因为它那个每次每每次变成两倍的话,它直接在它通过那个未运算的话,每次扩容如果翻两倍,它如果它进行一个位运算,如果是在低位的话,它还是直接在那个位置上不动。如果是高位的话,它进行一个与运算,变到前面,就就把就就这样子可以对可以避免一些那个哈西扣的算他对他进行哈希避免一些冲突,尽可能的一些避免冲突

解决哈希冲突的方法有什么

不会,回答了一个扩容

手撕算法

哈希表找一个字符串一个找一个找一个定义好的一个字符串,找他第一个不重复的字符应该是怎么去写?复杂度是多少

Map存入每一个字符,判断value是否为一,为一直接返回就好,很简单的一道题

TCP和UDP有什么区别

TCP是它是报文传输,三次握手,四次挥手可靠传输,

UDP是那个那个帧传输。数据不安全,会造成数据丢失

各自的使用场景有什么

TCP是点对点通信的,UDP可以一对一,一对多,多对多等。在HTTP1.0(不支持持久连接和管道化。)和HTTP1.1(支持同一个连接传输多个请求和响应。)都使用的是TCP进行传输,在HTTP2.0(还引入了头部压缩、服务器推送)换成UDP,利用QUIC协议进行传输(面试的时候答错了,实际是2.0是在1.1的基础上添加了多路复用,在3.0(目的是减少延迟和提高性能,支持更快的连接建立和更好的拥塞控制。)才基于UDP协议

什么是子网掩码?

不会 随便答的说ip太少,通过子网掩码让更多人使用,

听说过防火墙吗?介绍一下

部署项目的时候都需要把端口号放开,不然访问不到,为了网络的安全,避免直接把ip暴露到公网下,造成一些数据丢失以及一些安全性能(面试官补充去保护未经允许的用户限制他的访问)

听说过d dos攻击吗?讲一下

可以使用第三方DDOS服务来防止。同时提高项目的逻辑

知道版本控制吗

通过git控制代码的版本,每次对代码进行测试之后推到git仓库里面对代码进行版本的控制,避免代码的丢失以及一些冲突

反问

Java投递的go,后续如何安排

如果愿意转go可以来转go,也可以选择java,但我的部门目前没有java开发

该部门是使用的什么技术呢,主要负责做什么的?

整个一个它的硬件一个生命周期的管理。包括期间apple包括一个仓库的管理,物流的管理等等相关的一些数据,还有一些库存安全库存的预警之类的,大概是这么一个东西。

#秋招##java##后端#
秋招笔面记录 文章被收录于专栏

秋招中的笔试以及面记录

全部评论
为啥我面好未来没算法 😅就一个数据库有哪些索引没答全,其它全都答出来挂了
点赞 回复 分享
发布于 2024-09-15 10:07 江西
咱俩可能是一个面试官,你的也是硬件开发交付岗位吗。问的问题基本都一样
点赞 回复 分享
发布于 2024-09-08 19:59 山东
有结果么?
点赞 回复 分享
发布于 2024-09-07 21:04 河南

相关推荐

10-02 19:29
已编辑
浙江科技大学 运营
点赞 评论 收藏
分享
评论
6
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务