百度国际化— 社招Go(过) — 一面技术-深圳 - 7.8

一面-1小时 2024-7-8

  1. 自我介绍
  2. 共享屏幕
  3. 算法
    1. 两数之和
      1. 用暴力枚举写一了一下,问如何优化。
func twoSum(nums []int, target int) []int {
    for i, x := range nums {
        for j := i + 1; j < len(nums); j++ {
            if x+nums[j] == target {
                return []int{i, j}
            }
        }
    }
    return nil
}
  2. 用哈希表写了一下。 
func twoSum(nums []int, target int) []int {
    hashTable := map[int]int{}
    for i, x := range nums {
        if p, ok := hashTable[target-x]; ok {
            return []int{p, i}
        }
        hashTable[x] = i
    }
    return nil
}
     1. hashTable里面存的是什么?

2. 假如给 10 个 url,通过并发实现哪些 url 能通,最后一次性输出通的url和不通的url。go 实现 1. 先写的输出的通的,然后让输出不通的,都要一次性输出。 2. 让优化代码风格,注意变量命名 3. checkUrl函数优化,resp.Body.Close() 4. 以下是我的代码

package main

import (
	"fmt"
	"net/http"
	"sync"
)

// checkUrl
func checkUrl(url string, wg *sync.WaitGroup, reachableChan, unreachableChan chan<- string) {
	defer wg.Done()
	resp, err := http.Get(url)
	if err != nil || resp.StatusCode != http.StatusOK {
		unreachableChan <- url
		return
	}
	resp.Body.Close()
	reachableChan <- url
}

// checkUrl2  优化后的
func checkUrl2(url string, wg *sync.WaitGroup, reachableChan, unreachableChan chan<- string) {
	defer wg.Done()
	resp, err := http.Get(url)
	if err != nil {
		fmt.Printf("Error fetching URL %s: %v\n", url, err)
		unreachableChan <- url
		return
	}
	defer resp.Body.Close() // Ensure the response body is closed after all operations

	if resp.StatusCode != http.StatusOK {
		fmt.Printf("URL %s returned status code %d\n", url, resp.StatusCode)
		unreachableChan <- url
		return
	}
	reachableChan <- url
}

func main() {
	// 给 10 个 url 例子
	urls := []string{
		"https://www.baidu.com",
		"https://www.google.com",
		"https://www.bing.com",
		"https://www.yahoo.com",
		"https://www.yandex.com",
		"https://www.duckduckgo.com",
		"https://www.ask.com",
		"https://www.aol.com",
		"https://www.ask.com",
		"https://www.aol.com",
	}

	var wg sync.WaitGroup
	reachableChan := make(chan string, len(urls))
	unreachableChan := make(chan string, len(urls))
	for _, url := range urls {
		wg.Add(1)
		go checkUrl(url, &wg, reachableChan, unreachableChan)
	}
	wg.Wait()
	close(reachableChan)
	close(unreachableChan)
	//fmt.Println("resultChan:", resultChan)

	for url := range reachableChan {
		fmt.Println("通的url:", url)
	}

	for url := range unreachableChan {
		fmt.Println("不通的url:", url)
	}
}

  1. 项目

    1. 介绍一下我个人主页网站的架构。https://home.huchao.vip/。这就相当于一个应用,为什么能运行,肯定有一些机制,讲解一下背后的架构。
    2. https://home.huchao.vip/ 我的个人主页,点博客后,跳转到 https://blog.huchao.vip/ 我的个人博客页面。这中间发生了什么。
  2. 讲解一下公司ark方舟中台系统的架构设计

  3. 如果你接到工作,你对整个服务都不清楚,你是怎么开发的?

  4. 你做的是哪个服务?schedule-console,

  5. 详讲调度系统schedule-console

  6. 调度体现在哪?接收一些指令,然后去做一些工作

  7. 项目中,什么叫,利用Golang的并发特性和简洁语法实现高效的服务通信和数据处理逻辑。能细讲一下吗?

  8. 优化服务性能通过引入分布式缓存、负载均衡等技术﹐提升系统响应速度和可扩展性﹐预计服务性能提升30%以上

  9. mysql了解吗?你是怎么学的?有没有看过什么书?

总结:

  • 回答问题不用紧张,项目需要再熟悉,写的东西不管多还是少,只要写上了一定要了解,要有深度,不能只做开发,往上层要再想一想。
  • 又是0八股,项目是大头,项目的架构设计也是重点,不会啊。。。
#社招面试##Golang面经##项目##百度##Golang社招#
全部评论
老哥几年经验
点赞 回复 分享
发布于 2024-07-11 20:56 广东

相关推荐

09-25 23:46
已编辑
门头沟学院 golang
一面:&nbsp;全程1h多几分钟1.&nbsp;自我介绍2.&nbsp;你的项目是实际运行的还是练手项目?3.&nbsp;从你简历上的实习经历和项目经历挑一个来聊聊4.&nbsp;在实习期间,核心负责的内容是什么?5.&nbsp;你认为你遇到的主要的技术难点是什么?6.&nbsp;拷打实习7.&nbsp;Kafka&nbsp;的整体架构是怎样的?它有哪些核心组件,分别起什么作用?8.&nbsp;Broker&nbsp;和&nbsp;Partition&nbsp;具体是什么,作用是什么?9.&nbsp;Kafka&nbsp;是如何通过副本机制保证其可靠性的?10.&nbsp;你使用&nbsp;Kafka&nbsp;是怎么保证消息消费的有序性的?11.&nbsp;你的第一段实习提到了有做过&nbsp;SQL&nbsp;调优是吧?优化的具体背景、遇到的问题以及你的优化思路是什么?12.&nbsp;对于一个&nbsp;(A,&nbsp;B,&nbsp;C)&nbsp;的联合索引,WHERE&nbsp;C='...'&nbsp;AND&nbsp;A='...'和WHERE&nbsp;B='...'&nbsp;AND&nbsp;C='...'这两种查询的索引命中情况分别是什么?13.&nbsp;接T12,为什么数据库索引要遵循最左前缀匹配原则?14.&nbsp;举一些常见的导致索引失效的场景,以及对应的优化方法。15.&nbsp;Redis&nbsp;有哪些常见的数据结构?结合你的实际项目,谈谈在哪些场景下使用过它们。16.&nbsp;什么是&nbsp;Redis&nbsp;的热点&nbsp;Key17.&nbsp;接T24,热点&nbsp;Key&nbsp;会导致什么问题?通常有哪些解决方案?18.&nbsp;什么是&nbsp;TCP&nbsp;拥塞控制?19.&nbsp;总结一下常见的&nbsp;HTTP&nbsp;状态码,例如每种数字开头都是什么含义?20.&nbsp;在前后端都没有新版本上线的情况下,突然收到大量&nbsp;404&nbsp;报警,你会如何排查这个问题?你会去哪里看信息?21.&nbsp;当服务器因为流量过大而扛不住时,一般会返回什么状态码?22.&nbsp;你知道什么是操作系统的局部性原理吗?手撕:23.&nbsp;写一条&nbsp;SQL&nbsp;语句,从一张成绩表&nbsp;(course,&nbsp;student_id,&nbsp;score)&nbsp;中,查询出“数学”课程中考取了最高分的所有学生的student_id和score24.&nbsp;实现一个随机函数,输入为一个整数数组(如[5,&nbsp;2,&nbsp;2,&nbsp;1]),函数的输出为该数组的一个随机下标(0,&nbsp;1,&nbsp;2,&nbsp;3)。要求:每个下标被返回的概率与其对应的值成正比。例如,返回下标&nbsp;0&nbsp;概率是&nbsp;5&nbsp;/&nbsp;(5+2+2+1),即&nbsp;5/10。反问:1.&nbsp;部门业务2.&nbsp;对校招生的预期追问:1.&nbsp;目前手上的Offer情况?2.&nbsp;如果通过,最早什么时候能过来提前实习?3.&nbsp;对工作地点的意向?二面:全程45min左右1.&nbsp;自我介绍2.&nbsp;手撕:给n个骰子,投掷一轮,求点数之和为k的概率(类似于LeetCode1155,DFS暴力出来了,面试官说时间复杂度太高,要求换解法,DP解法没撕出来)3.&nbsp;内存置换算法有哪些?4.&nbsp;现在如果让你去设计一个基于LFU的内存缓存组件,你应该怎么做?5.&nbsp;接T4,怎么找最不经常使用的那个元素呢?(回答构建小根堆)6.&nbsp;接T5,那这样每次查询一个元素,时间复杂度是什么样的呢?7.&nbsp;接T6,怎么才能进一步地降低这个时间复杂度?(回答跳表、哈希桶)8.&nbsp;你实习是带转正的吗?在那边转正了吗?现在是还在职还是离职?答辩预计能过吗?9.&nbsp;实习主要负责什么?10.&nbsp;你觉得能支撑你转正通过的点在哪个方面?11.&nbsp;拷打实习12.&nbsp;goroutine里面出现了panic会有什么后果?13.&nbsp;接T12,如果没recover会怎样?14.&nbsp;接T13,goroutine出现panic,主进程会受影响吗?15.&nbsp;在主协程recover能全局捕获吗?16.&nbsp;MySQL在什么情况下会产生Gap锁?反问:1.&nbsp;算法DP解法?(下去再自己看看)2.&nbsp;提升点
点赞 评论 收藏
分享
评论
7
12
分享

创作者周榜

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