lua 面试题

Posted preston

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua 面试题相关的知识,希望对你有一定的参考价值。

Lua中有8个基本类型分别为

nil、boolean、number、string、userdata、  function、thread、 table

空   布尔     数字    字符串  自定义类型  函数      线程     表


给出下面 表达式的输出是什么

print(type("Hello world"))   --> string

print(type(10.4*3))              --> number

print(type(print))                --> function

print(type(type))                 --> function

print(type(true))                 --> boolean

print(type(nil))                    --> nil

print(type(type(X)))            --> string

print("10"+ 1)                     --> 11

print("10 + 1")                    --> 10 + 1

print("hello"+ 1)                 --> 报错 (无法转换 "hello")

print(10 .. 20)                      --> 1020


pairs 和 ipairs区别

pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil

ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出


请写一个多值返回的函数

function foo2 () return 'a','b' end


请写一个可变参数的函数

function g (a, b, ...) end

g(3, 4, 5, 8) a=3, b=4, arg={5, 8; n=2}

function select (n, ...)

    return arg[n]

end


给出下面代码的输出

print(string.find("hello hello", " hel")) --> 6 9

print(select(1, string.find("hello hello", " hel"))) --> 6

print(select(2, string.find("hello hello", " hel"))) --> 9


string.sub("123456",2,-2)  

结果2345


有一个table local test0 ={1,9,2,8,3,7,4,6}  写一个算法从小到大排序

function bubblesort( test0 )

    if test0 == null then 

        return

    end 


    while (true) do 

        local exchange = false;

        for i = 1, #test0 do 

            if test0[i] > test0[i + 1] then 

                local temp = test0[i]

                test0[i] = test0[i + 1]

                test0[i + 1] = temp

                exchange = true 

            end 

        end 

        if (exchange == false) then 

            break;

        end 

    end 

end 


编写一个函数,将某个数组分成两个数组,一个存放偶数,一个存放奇数

local array = {4,2,3,4,1,6,5,8,7}


function device(array)

    local oushuArr = {}

    local jishuArr = {}

    for i = 1, #array do

        if t[i] % 2 == 0 then

            oushuArr[#oushuArr + 1] = array[i]

        else

            jishuArr[#jishuArr + 1] = array[i]

        end

    end

    return oushuArr,jishuArr

end 


将一个数组从小到大排序,然后将重复出现的数字全部删除(后续数字往前移)

public class Solution {    

       public int removeDuplicates(int[] nums)    

       {        

            if (nums == null || nums.length == 0)        

            {            

                      return 0;        

            }                

            int size = 0;        

            for (int i = 0; i < nums.length; i++)        

            {            

                   if (nums[i] != nums[size])          

                   {                

                         nums[++size] = nums[i];            

                   }        

             }        

             size++;        

             return size;   

        } 

}


写出这段程序的运行结果
test={1,2,3,4,5,6,7,8}  

print(#test)
结果:  8


写出这段程序运行结果
a = {}
a["x"] = 10
b = a
print(b["x"]) 
b["x"] = 20
print(a["x"])

结果:  10   10


请写一个带有不定参数的lua 函数 并输出所有的参数
结果: 

function printfunction (...) 

        print tostring(...)

end 













以上是关于lua 面试题的主要内容,如果未能解决你的问题,请参考以下文章

游戏客户端与服务器面试题-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)

一道折了无数选手的lua面试题,你来试试?

Redis 面试题

面试题

redis常见面试题有哪些?redis集群面试题及答案整理

腾讯Java高级面试题---深圳