三七互娱-Go社招-base广州-8.6

alt

算法

买股票:给定一个数组prices ,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子!卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。

示例1:输入:[7,1,5,3,6,4]输出:5

解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6,因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例2:输入:prices= [7,6,4,3,1]输出:0

解释:在这种情况下,没有交易完成,所以最大利润为0。 提示:1<= prices.length <= 105 0 <= prices[]<= 104 给出思路步骤和代码 go

解题思路

要解决这个问题,我们可以采用一次遍历的方法。具体思路是,我们维护两个变量:一个是到目前为止的最低价格 minPrice,另一个是目前为止的最大利润 maxProfit。我们从左到右遍历价格数组,对于每一天的价格,我们进行以下操作:

如果当前价格比 minPrice 还低,那么更新 minPrice 为当前价格,因为这意味着我们可以在更低的价格买入股票。 否则,我们计算当前价格卖出股票的利润(即当前价格减去 minPrice),如果这个利润大于 maxProfit,那么更新 maxProfit。

遍历结束后,maxProfit 就是我们所求的最大利润。

package main

import (
    "fmt"
)

func maxProfit(prices []int) int {
    if len(prices) == 0 {
        return 0
    }
    minPrice := prices[0]
    maxProfit := 0
    for _, price := range prices {
        if price < minPrice {
            minPrice = price
        } else if price-minPrice > maxProfit {
            maxProfit = price - minPrice
        }
    }
    return maxProfit
}

func main() {
    prices := []int{7, 1, 5, 3, 6, 4}
    fmt.Println(maxProfit(prices)) // 输出: 5

    prices2 := []int{7, 6, 4, 3, 1}
    fmt.Println(maxProfit(prices2)) // 输出: 0
}

一面

  1. 在哪里?在职?
  2. 自我介绍
  3. 23年毕业么?
  4. 技术
  5. k8s
    1. 讲一下k8s大概的网络原理是什么样子
    2. service之间的调用是怎么个调用方法呢
    3. 如果想进入到具体的pod里面,用什么命令来执行?大概加哪几个参数啊
    4. 怎么实现负载均衡的呢?
  6. kafka
    1. 能说一下kafka是怎么确保数据的一个消费的吗?
    2. 比如说现在有一百万数据,消费端在消费的时候已经消费了50万数据,挂掉了,下一次再启动消费的时候怎么确保是从第50万条开始消费的,而不是从第一条开始消费的?
    3. 那他是通过什么方式知道,你这一个进程来从50万开始。 既然是订阅是有多消费端的嘛,假如是a消费,那他怎么知道,按照你的说法,a消费重新来的时候从50万开始,他怎么知道是a呢
    4. kafka的分区策略是什么样子的
    5. kafka的复制机制是什么样子的
    6. 你前面说的分区策略只说了一个,他有哪几种分区策略啊?默认的是哪个策略
    7. kafka默认的端口号是多少
  7. mysql
    1. 怎么知道这一个sql语句的性能怎么样
    2. mysql的默认的端口号呢
    3. 通过什么命令可以查看当前mysq有哪些进程(或者说有哪些查询语句在执行)在执行着呢,用什么方式来看?
    4. 用什么命令去看这个建表的语句
    5. 看这个表有哪些索引怎么看
    6. mysql有哪些存储引擎,区别是什么
    7. 想要实现行级锁他的前提条件是什么
    8. 什么是行级锁什么是表级锁
    9. 事务的原子性是指什么
    10. sql语句怎么来实现一条锁呢,想实现一条锁的话,sql语句怎么来执行啊,锁等待的这条sql要怎么写啊
    11. 怎么解锁呢
    12. 换个思路来说,怎么确保你主动这个锁完之后,一定会把他解锁,不至于说解锁失败,会长期的占用着这个锁
  8. redis
    1. 有哪几种数据结构
    2. 队列的时候,用什么命令往里写数据,什么命令取数据
    3. redis默认端口号多少
  9. 项目
    1. 支付相关
    2. 游戏项目,列了很多,你主要负责哪一块东西啊
    3. 用户模块也是你开发的吗
    4. session和cookie有什么区别呀
    5. 如果说cookie被禁用掉的话sessionID还能用吗?那用什么方式来做呢?你这个session在服务端用的什么存储的
    6. 如果说用户改了一下密码怎么把他踢下线呢?假如说两部手机,a、b手机都登录了号,b手机把密码改掉了,现在业务需求是b把密码改掉了a手机登录失效不能玩,要怎么做这个事情?
    7. 你们的中台是b端的是吧,那对应的c端业务是什么,我看你有广告投放,实际上c端投放也算是之一嘛
    8. 最高峰的是每天创建多少广告啊
    9. 这个中台哪个菜单用的人最多
    10. 当时几个人做这个事情,怎么分工的呢,你负责哪一个模块
    11. 什么叫做ARPU啊
    12. CPM
    13. 你们抓取过来的数据你们主要看哪些指标?ROI是什么意思,如果你程序这边算法的话,分子分母分别是什么
    14. 如果说你再调他们接口的时候超时了你会怎么处理?或者怎么确保你拉回来的数据不会重复也不会丢?
    15. 在做这个项目的过程中你遇到过的最大的问题是是什么
    16. 这个游戏是网上比较火的还是你们自己搞的,有发行吗?那这个 DAU 最高的是有多少
    17. 你们服务端最高峰在什么时候,或者说你们用户最高峰是在几点
    18. 你们投的是哪个国家?
    19. 全球的话你们服务器怎么部署的?
    20. 部署在美国的话那其他国家网络延迟问题怎么解决呢?
    21. 怎么保证数据一致性呢
    22. 这种跨地域的,跨国的,跨海洋的,丢包是一个很正常的一个现象
  10. 其他
    1. 有什么兴趣爱好
    2. 最近有关注过哪个GitHub的大牛吗?或者项目
    3. 真正的兴趣爱好,不是为了找工作
    4. 运动的爱好
    5. 接下来自己两到三年自己的一个职业规划是什么样的
    6. 有没有什么样的一个目标
    7. 有没有自己的一个具体的规划,想成为你导师这样的人你觉得需要做哪些事情呢
    8. 除了刷牛客和GitHub之外,自己有做过什么其他的学习吗
    9. bluebell这个项目对你有什么收获吗
    10. 近期有什么呢
    11. 用三个词总结自己的优点
    12. 用三个词总结自己的缺点
    13. 你们大学课程有学一些算法课吗
    14. 能大概说一下红黑树是什么吗
  11. 反问
#三七互娱##Golang社招##广州##社招##游戏公司#
全部评论

相关推荐

从大一开始就开始学习Java,一路走来真的不算容易,每次面试都被压力,不过这次终于达成了自己的一大心愿!时间线和面经:8.17-投递9.1-一面实习+项目拷打看门狗机制讲一下redis加锁解锁的本身操作是什么Lua脚本是干什么的udp和tcp讲一下流量控制讲一下令牌桶算法说一下大端和小端是什么线程和协程有什么区别怎么切换协程切换的时候具体做了什么对于程序来说,你刚才提到的保存和恢复现场,这个现场有哪些信息udp优势现在有一个客户端和服务端,要实现TCP的通信,我们的代码要怎么写服务器怎么感知有新的连接怎么处理多个客户端的请求连接TCP怎么处理粘包和分包现在有两个文件,然后每个文件都有一亿条URL,每个的长度都很长,要怎么快速查找这两个文件共有的URLHashmap底层说一下怎么尽量提升插入和查询的效率如果要查找快,查询快,还有解决非空的问题,怎么做LoadingCache了解吗手撕:堆排序9.4-二面部门的leader,超级压力面拷打实习+项目,被喷完全没东西类的加载到垃圾回收整个底层原理讲一遍类加载谁来执行类加载器是什么东西,和进程的关系Java虚拟机是什么东西,和进程的关系如果我们要执行hello&nbsp;world,那虚拟机干了什么呢谁把字节码翻译成机器码,操作时机是什么Java虚拟机是一个执行单元吗Java虚拟机和操作系统的关系到底什么,假如我是个完全不懂技术的人,举例说明让我明白一个操作系统有两个Java程序的话,有几个虚拟机有没有单独的JVM进程存在启动一个hello&nbsp;world编译的时候,有几个进程JVM什么时候启动比如执行一条Java命令的时候对应一个进程,然后这个JVM虚拟机到底是不是在这个进程里面,还是说要先启动一个JVM虚拟机的进程垃圾回收机制的时机能手动触发垃圾回收吗垃圾回收会抢占业务代码的CPU吗垃圾回收算法简单说说垃圾回收机制的stop&nbsp;the&nbsp;world存在于哪些时机垃圾回收中的计算Region的时候怎么和业务代码并行执行假如只有一个线程,怎么实现并行Java为什么要这么实现Java效率比C++慢很多,那为什么还要这样实现Java虚拟机到底是什么形式存在的说一下Java和C++的区别还有你对Java设计理念的理解无手撕面试结束的时候,我真的汗流浃背了,面试官还和我道歉,说他是故意压力面想看看我的反应的,还对我给予了高度评价:我当面试官这么多年,你是我见过最好的一个9.9-三面临时通知的加面,就问了三十分钟项目9.11-hr面问过往经历,未来计划,想从腾讯实习中得到什么?当场告知leader十分满意我,所以直接ochr面完一分钟官网流程变成录用评估中,30分钟后mt加微信告知offer正在审批9.15-offer这一次腾讯面试体验真的不错,每个面试官能感觉到专业能力很强,反馈很足,比起隔壁某节真是好太多以后就是鹅孝子了
三本咋了:当面试官这么多年你是我见过的最好的一个
你面试被问到过哪些不会的...
点赞 评论 收藏
分享
感觉初筛都过不去,但是没挂我,我就先等着吧
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
6
11
分享

创作者周榜

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