Lua 面試考題附答案解析(一)

2021-10-07 08:37:44 字數 2273 閱讀 7308

1.實現替換字串"abcdefgh"中的"abc"為"ddc".(10分)

答案:

string.gsub("abcdefgh","abc","ddc")
2.寫出下面程式的輸出:(10分)
g = 1

local a = 3

function add(a, b)

g = g + 1

a = a + 1

b = b + 1

return , c

endprint(add(1, 2)[1])

print(a)

print(g)

print(add(2, 1)[2])

print(a)

print(g)

print(false == nil)

print((nil and false))

print(false or nil == true)

print(nil and false == true)

答案:

5 3 2 nil 3 3 false nil false nil
3.ipairs和pairs的區別?(10分)

答案:

1.ipairs遇到nil會停止,pairs會輸出nil值然後繼續下去

2.ipairs並不會輸出table中儲存的鍵值對,會跳過鍵值對,然後順序輸出table中的值。

而pairs會輸出table的鍵值對,先順序輸出值,再亂序(鍵的雜湊值)輸出鍵值對。

4.函式冒號與點的區別?(10分)

答案:

冒號的第乙個引數預設為self,指向呼叫該函式的表。
5.print(string.find(「hello hello」," hel"))的結果?((10分)

答案:

6 9
6.簡述cocos2d-x的記憶體管理機制?(10分)

答案:

引用計數,通過ref類,當引用計數為0時,釋放記憶體。
7.普通全域性變數和static全域性變數的區別?(10分)

答案:

生存週期相同,作用域不同,普通全域性變數可以作用於所有檔案,extern宣告即可,而static全域性變數只能作用於當前檔案。
8.請寫乙個帶有不定引數的lua函式,並輸出所有的引數.(10分)

答案:

function test( ... ) 

local args =

for k,v in pairs(args) do

print(k,v)

endend

9.用lua實現乙個選擇排序演算法.(10分)

答案:

10.如下一段程式,請在todo處插入**,使後面對table新建值時提示錯誤,並使其無效(10分)

local table = setmetatable({}, {})

table.key = "iam key"

table.value = 123

print(table.key)

---- todo:在這裡插入你的**

答案:

local mt = getmetatable(table) -- 獲得table的元表

function mt:__newindex(key,value) -- 新增__newindex元方法

table[key] = nil

print("cannot create new property" .. key)

end

table.key2 = 「invalid」 — 這裡應該列印出「cannot create new property key2"

print(table.key2) — 這裡應該輸出 nil

面試考題 你要求多少底薪?

老闆請我坐下後,只顧埋頭看他的檔案,時間一分一秒地過去了。老闆還沒有開口的跡象。我覺得該老闆特 狡猾 心也開始虛了,真不知道他會出些什麼離奇古怪的考題。也不知過了多久,老闆突然抬起頭對我說 其實我也是第一次招聘業務員,對這一行也挺陌生的。假如公司錄用你,請問你要求多少底薪?據我所知,業務員的工資主要...

PHP面試題(附答案)

1.在php中,當前指令碼的名稱 不包括路徑和查詢字串 記錄在預定義變數 1 中 而鏈結到當前頁面的的前一頁面url記錄在預定義變數 2 中 script name也可以 其它的見參考手冊 語言參考 變數 預定義變數 當前執行指令碼的絕對路徑名 d inetpub wwwroot php est.p...

kafka面試題 附答案

1.什麼是kafka kafka是分布式發布 訂閱訊息系統,它最初是由linkedin公司開發的,之後成為apache專案的一部分,kafka是乙個分布式,可劃分的,冗餘備份的永續性的日誌服務,它主要用於處理流式資料。2.為什麼要使用 kafka?為什麼要使用訊息佇列?緩衝和削峰 上游資料時有突發流...