米哈游筆試 3.29
筆試前基本搜不到什么題,也不知道復(fù)習(xí)什么,直接考??纪昕戳藙e人發(fā)的帖子,好像所有技術(shù)崗考的內(nèi)容都一樣。鼠鼠投的是前端(人事系統(tǒng))的暑期實(shí)習(xí)。
1. 單選題
內(nèi)容包括C++,計網(wǎng),操作系統(tǒng)(進(jìn)程線程調(diào)度的問題),瀏覽器緩存(沒考前端的內(nèi)容,覺得確實(shí)是所有技術(shù)崗位統(tǒng)考)
2. 多選題
內(nèi)容包括C++,計網(wǎng),操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu)
(C++是真的多,我是一點(diǎn)也不會,沒學(xué),直接涼了,操作系統(tǒng)的那些選擇也好多不會)
3. 代碼題
(1) 給一個數(shù)組,定義一個“區(qū)間”= [1, i],在這個“區(qū)間”的對應(yīng)凸區(qū)間 = [min{a1,... ai}, max{a1, ... ai}] 中,找出不屬于該凸區(qū)間的最小非負(fù)數(shù)。(理解題意就得看好一會,頭次看想錯了,重寫花了點(diǎn)時間,我直接按求區(qū)間->遍歷區(qū)間求凸區(qū)間->獲得結(jié)果,這種暴力寫法寫,不出意外超時,覺得可以用動態(tài)規(guī)劃寫,但沒想出來)
'''js
let arr = [1, 0, 4, 5, 1]
let result = []
let min = Number.MAX_VALUE, max = 0
for(let i = 0; i < arr.length; i++) {
// 維護(hù)最大值和最小值就好,別再去求區(qū)間,遍歷
min = Math.min(min, arr[i])
max = Math.max(max, arr[i])
if(min > 0) {
result.push(0)
}else {
result.push(max+1)
}
}
console.log(result)
'''
(2) 給一個二進(jìn)制序列,如:&amp;quot;001100&amp;quot;,然后把11往后移1位,...,最后形成一個方陣,如:
001100
000110
000011
100001
110000
011000
求這個方陣中,由0組成的最大矩形或三角形的面積(沒思路直接過)
'''js
let s = '001110'
/**
* 別傻傻去生成矩陣,直接求連續(xù)的0,再從1累加得到面積,如果全0則直接求正方形面積
*
* 001110
* 000111
* 100011
* 110001
* 111000
* 011100
*/
let isSquare = true
for(const i of s) {
if(i !== '0') {
isSquare = false
break
}
}
if(isSquare) {
console.log(s.length * s.length)
}
let zeroNum = s[0] === '0' ? 1 : 0
let max = 0
let ss = s + s
for(let i = 1; i < ss.length; i++) {
if(ss[i] === '0' && ss[i - 1] === '1') zeroNum = 1
if(ss[i] === '0' && ss[i - 1] === '0') zeroNum++
max = Math.max(max, zeroNum)
}
console.log((1 + max) * max / 2)
'''
(3) 給一個數(shù)組,一個查詢次數(shù)n,和n個輸入的目標(biāo)值,求這個數(shù)組中任意2個不同的數(shù),他們的乘積等于對應(yīng)的目標(biāo)值,輸出是n對下標(biāo)(找不到[-1,-1])。(也是直接暴力解法,過了20%,可以再進(jìn)行剪枝,但還是沒過)考完才發(fā)現(xiàn)可以用兩數(shù)之和哈希表的操作
'''js
let arr = [2,3,6,7,3,7,4]
let target = 6
let map = new Map()
let result = []
for (let i = 0; i < arr.length; i++) {
if(arr[i] > target) continue
if (map.has(target / arr[i])) {
result = [i, map.get(target / arr[i])]
}
map.set(arr[i], i)
}
console.log(result)
'''
總結(jié):太難了,又是一輪游,下去再沉淀沉淀。之前看過米哈游秋招的筆試,好像是21年還是22年的,手寫題都沒這么難,都a出來的,現(xiàn)在tm是越來越難,也可能是一緊張腦子亂了(好了不說了,主要原因是自己菜)
再做了一遍,確實(shí)覺得沒有考試那時感覺難,最后一題在想去重+根號n,去重的話,索引不會發(fā)生變化嗎。(看看有無佬過了這一道)
#筆試##米哈游##暑期實(shí)習(xí)##前端##前端實(shí)習(xí)#
1. 單選題
內(nèi)容包括C++,計網(wǎng),操作系統(tǒng)(進(jìn)程線程調(diào)度的問題),瀏覽器緩存(沒考前端的內(nèi)容,覺得確實(shí)是所有技術(shù)崗位統(tǒng)考)
2. 多選題
內(nèi)容包括C++,計網(wǎng),操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu)
(C++是真的多,我是一點(diǎn)也不會,沒學(xué),直接涼了,操作系統(tǒng)的那些選擇也好多不會)
3. 代碼題
(1) 給一個數(shù)組,定義一個“區(qū)間”= [1, i],在這個“區(qū)間”的對應(yīng)凸區(qū)間 = [min{a1,... ai}, max{a1, ... ai}] 中,找出不屬于該凸區(qū)間的最小非負(fù)數(shù)。(理解題意就得看好一會,頭次看想錯了,重寫花了點(diǎn)時間,我直接按求區(qū)間->遍歷區(qū)間求凸區(qū)間->獲得結(jié)果,這種暴力寫法寫,不出意外超時,覺得可以用動態(tài)規(guī)劃寫,但沒想出來)
'''js
let arr = [1, 0, 4, 5, 1]
let result = []
let min = Number.MAX_VALUE, max = 0
for(let i = 0; i < arr.length; i++) {
// 維護(hù)最大值和最小值就好,別再去求區(qū)間,遍歷
min = Math.min(min, arr[i])
max = Math.max(max, arr[i])
if(min > 0) {
result.push(0)
}else {
result.push(max+1)
}
}
console.log(result)
'''
(2) 給一個二進(jìn)制序列,如:&amp;quot;001100&amp;quot;,然后把11往后移1位,...,最后形成一個方陣,如:
001100
000110
000011
100001
110000
011000
求這個方陣中,由0組成的最大矩形或三角形的面積(沒思路直接過)
'''js
let s = '001110'
/**
* 別傻傻去生成矩陣,直接求連續(xù)的0,再從1累加得到面積,如果全0則直接求正方形面積
*
* 001110
* 000111
* 100011
* 110001
* 111000
* 011100
*/
let isSquare = true
for(const i of s) {
if(i !== '0') {
isSquare = false
break
}
}
if(isSquare) {
console.log(s.length * s.length)
}
let zeroNum = s[0] === '0' ? 1 : 0
let max = 0
let ss = s + s
for(let i = 1; i < ss.length; i++) {
if(ss[i] === '0' && ss[i - 1] === '1') zeroNum = 1
if(ss[i] === '0' && ss[i - 1] === '0') zeroNum++
max = Math.max(max, zeroNum)
}
console.log((1 + max) * max / 2)
'''
(3) 給一個數(shù)組,一個查詢次數(shù)n,和n個輸入的目標(biāo)值,求這個數(shù)組中任意2個不同的數(shù),他們的乘積等于對應(yīng)的目標(biāo)值,輸出是n對下標(biāo)(找不到[-1,-1])。(也是直接暴力解法,過了20%,可以再進(jìn)行剪枝,但還是沒過)考完才發(fā)現(xiàn)可以用兩數(shù)之和哈希表的操作
'''js
let arr = [2,3,6,7,3,7,4]
let target = 6
let map = new Map()
let result = []
for (let i = 0; i < arr.length; i++) {
if(arr[i] > target) continue
if (map.has(target / arr[i])) {
result = [i, map.get(target / arr[i])]
}
map.set(arr[i], i)
}
console.log(result)
'''
總結(jié):太難了,又是一輪游,下去再沉淀沉淀。之前看過米哈游秋招的筆試,好像是21年還是22年的,手寫題都沒這么難,都a出來的,現(xiàn)在tm是越來越難,也可能是一緊張腦子亂了(好了不說了,主要原因是自己菜)
再做了一遍,確實(shí)覺得沒有考試那時感覺難,最后一題在想去重+根號n,去重的話,索引不會發(fā)生變化嗎。(看看有無佬過了這一道)
#筆試##米哈游##暑期實(shí)習(xí)##前端##前端實(shí)習(xí)#
全部評論 推薦 最新 樓層
第一題,維護(hù)區(qū)間最小值和最大值就好。
第二題,考慮連續(xù)的0個數(shù),然后按三角算,如果全是0,按矩形算
第三題,我排序,二分 20%
第二題考完才想到根據(jù)旋轉(zhuǎn)直接算

太緊張了第一次筆試
算法比往年難好多
請問大概多久推進(jìn)的面試啊
第三題算法有問題,你看6/7等于的結(jié)果是0,那0*7等于6嗎?
第三問嘗試緩存,可以增加一點(diǎn)。好像很多次都不需要算來著,這種題,一般緩存真的好用??????
現(xiàn)在還是待測試是什么情況大佬們
筆試真的一樣嗎
越想越氣,我是真的傻杯

第一題應(yīng)該是min大于0就輸出0,而不是min等于max
放心,我第三題就是哈希,也只是20%
相關(guān)推薦
點(diǎn)贊 評論 收藏
分享
點(diǎn)贊 評論 收藏
分享