erlang面试经(2)

本文涵盖了Erlang编程语言的各种面试问题,包括OTP相关、定时器、运算符、Erlang条件表达式和循环、二进制匹配、字符串替换、Key-Value存储、进程通信、服务器上线问题处理流程、调试技巧、游戏开发相关问题、数据结构设计和转换、进程管理和通信、时间函数、数据类型、ETS表、并发控制等多方面内容,适合Erlang开发者及面试者参考。
摘要由CSDN通过智能技术生成

继上一部分往下

一、OTP相关

  1. gen_server:cast和erlang:send都可以向进程发送消息,有什么区别?
    答:gen_server:cast底层调用的就是erlang:send,消息格式为{’$gen_cast’, Request},但是加上了no_connect如果没连接上,就返回false
  2. spawn和apply的区别
    答:spawn是创建进程、apply是过程调用。spawn一般是spawn(Fun)或者spawn(M,F,A),apply(M,F,A)
  3. 四大行为模式
    答:gen_server、gen_fsm、gen_event、supervisor
    1)gen_server:start、handle_cast、handle_call、handle_info、terminate、code_change
    2)gen_fsm
    3)gen_event
    4)supervisor
    在这里插入图片描述
  4. start and start_link
    start创建的进程是一个独立的gen_server进程
    start_link创建的进程是是监控进程的子进程,有link关系
    类似的又spawn和spawn_link、proc_lib:start和proc_lib:start_link

二、定时器

  1. gen_server实现定时
    答:1秒后会超时,调用handle_info,无限循环调用handle_info,info为‘timeout’
-define(Time, 1000).
init([]) ->
{
   ok, State, ?Time}.
handle_info(Info, State) ->
io:format("timeout 1seconds .. ~p~n", [Info]),
{
   noreply, State, ?Time}.
  1. send_after定时器
    答:erlang:send_after是BIF函数,它们吧计时器挂在进程自己身上,so尽量使用erlang:send_after
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. erlang:send_after和erlang:start_time的区别
    在这里插入图片描述

三、运算符

1 == 1.0 返回 true
1 =:= 1.0 返回false
1 /= 1.0 返回false
1 =/= 1.0 返回true
(0 == 0) or (1/0 > 2) 返回exception error
(0 == 0) orelse (1/0 >2 ) 返回true
true or ok 返回bad argument
true orelse ok 返回true
true and ok 返回bad argument
true andalso ok 返回ok
true andalso ok andalso false 返回bad argument
true andalso true andalso ok 返回ok
1 div 2 返回0
1 rem 2 返回1
1 / 1 返回1.0
not (1 > 2) 返回true
11 xor10 返回01(异或相同为假不同为真)
true xor true 返回false(相同为假,不同为真)
2#11 bor 2#10 返回3(或运算,1与任何都等于1,00为0)
2#11 band 2#10 返回2(与运算,1与1等于1,其他为0)
2#10 bxor 2#10 返回0(异或,相同为假,不同为真)
bnot 2#10 返回-3(一元 not 位运算,全部为真并且负值)
2#10 bsl 1 返回4
2#10 bsr 1 返回1
在这里插入图片描述

五、Erlang有哪些运算符

算术运算符:+、 -、 *、 /、 div、 rem
比较运算符:==、=:=、=/=、>=、 =<
逻辑运算符 : and or andalso orelse
位运算符: bsl、bsr
位逻辑运算符: band bor bxor bnot(与,或,异或,全部为真且负或正)

六、请写出Erlang条件表达式、循环

if
	... ->
		xxxxx;
	true 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值