对一门不是非常熟悉的语言是怎么面试的

公司是一个基础通讯类的公司,需要的职位是一个高级系统和软件工程师。

职位要求,是一个完全不怎么大众的语言:Elixir。

没听过,这就对了,这是一个函数式的语言,可以认为是 Erlang 的升级版本,Erlang 多用在交换机设备上的开发语言,这个语言其实还是比较小众的。

RabbitMQ 就是 Erlang 开发的,虽然 Erlang 在整个项目中的比例并不是很高。

2023-10-06_15-30-51

职位需求

这个职位的需求就是使用 Elixir 语言来处理 HTTP 的 API。

这个 API 主要是用户电子邮件相关的内容,我不知道为什么他们选择 Elixir,可能主要还是比较好和现有的系统保持一致吧。

面试

整个面试的时间是 1 个小时。

在这一个小时中主要聊了下对 HTTP 的请求,API 的调用是不是熟悉。不管用的是什么语言,只要你写过 API,这部分还是比较容易说清楚的。

下一步就是在线的 Coding 了,这个在线的代码也是非常简单的,唯一麻烦的地方是 Elixir,因为从来没有接触过这个语言,突然在平台上要用 Elixir 这个语言还是有点懵逼的。

好在示例程序什么都比较简单,就是对照下 API 的调用文档,利用模拟的环境写几个 API 接口。

只要有示例程序,要写其他的还是很简单就完成了,因为对 API 的写法,不管什么语言都差不多。

好在他们提供了一个 API 的示例程序。

在这部,都已经顺利完成了所有的代码,也正确没有问题。

随后他们就提出是不是给我一个回家做的题目,要求是完成这个题目,然后尽快提交给他们。

回家做题

对于给出的题目,稍后我在下面的文章中给出。

如果你是使用其他的比较高级的语言,这个应该没有什么问题,可以说是非常简单的。

但是 Elixir 是一个函数式的语言,同时循环是不可变的,在这里哪怕是一个循环都要折腾半天。

本着,既然我答应你回家试试了,那么我就抱着一定要做出来的想法来做的,也在规定的时间把代码提交了。

结果

大概 1 周后,收到了他们比较客气的拒绝信。

理由是找到了更加合适的人了。

点评

找到更加合适的人,这个不足为奇。因为 Elixir 这个语言实在是非常小众的语言,有比较大的学习曲线。

不是说,你今天开始看文档,明天就能全部看明白的那种。

这个语言没有好的集成 IDE 开发环境,代码写起来不是那么友好,高级语言非常容易实现的东西,Elixir 需要比较多的步骤才能完成。

其实,对公司本身来说,这次面试并没有什么负面评价。主要原因是,在投简历的时候没有仔细看看需要的语言,主要是看了 API 编程能力。

通常来说,这个都不是什么问题。

唯一感觉有点不好的是,公司方面对面试者的反馈比较差。在我提交代码到对方邮箱后,没有任何邮件说邮件已经收到了。完全不知道邮件是不是已经发送过去了或者他们在进行评估什么的。

一般来说,2 到 3 天没有消息的话,感觉都不会非常靠谱,所以也没有抱有太大希望。

只是希望的是,他们应该可以通过更好的沟通让整个流程更加好,可惜他们没有做到,有点把面试当儿戏的意思。

题目和解答

Program 1

Using input_data1.txt, complete the code in file program1.exs

You can install Elixir on a machine you work on, or you can
use Try It Online or something similar.
tio has an input section where you can paste in the input data.

input_data1.txt (3.6 KB)

源代码如下:

defmodule M dodef read doIO.read(:stdio,:all)enddef input_to_list( input ) do# turn single string into a list of input valuesString.split(input)enddef calculate([head | tail], acc) docalculate( tail, head + acc )end# finishdef calculate( [], acc ) doaccend
endIO.inspect M.read() |> M.input_to_list |> M.calculate(0)

Program 2

Extending the technique of Program 1, write a program that
given 3 lists, selects the greatest even value at each iteration and
adds it to an accumulator. For example:

[ 5, 8, 9, 2, 4, 7 ]
[ 9, 1, 6, 7, 9, 6 ]
[ 4, 4, 8, 6, 2, 4 ]

sums the list:

[ 4, 8, 8, 6, 4, 6 ]

and a sum of 36

The lists to use are:

[184, 89, 960, 133, 239, 413, 425, 355, 636, 519, 430, 562, 296, 175, 471, 260, 279, 934, 667, 804, 954, 274, 833, 428, 912, 789, 76, 805, 522, 692, 139, 598, 943, 309, 954, 265, 958, 559, 722, 910, 388, 996, 716, 706, 291, 236, 593, 154, 103, 8, 319, 722, 863, 493, 384, 206, 696, 563, 276, 422, 642, 163, 926, 823, 608, 193, 713, 119, 141, 297, 99, 321, 976, 972, 46, 34, 719, 186, 446, 563, 139, 887, 729, 319, 679, 734, 565, 531, 210, 275, 113, 409, 384, 872, 442, 364, 757, 44, 332, 802, 389, 626, 15, 376, 143, 450, 362, 31, 847, 935, 103, 856, 700, 78, 904, 697, 453, 995, 420, 426, 1000, 264, 88, 384, 323, 322, 289, 383, 916, 460, 350, 29, 384, 421, 869, 462, 156, 362, 162, 757, 31, 450, 85, 850, 344, 864]
[112, 348, 854, 848, 27, 435, 103, 625, 477, 203, 513, 736, 638, 229, 517, 580, 476, 692, 124, 136, 257, 785, 415, 5, 332, 366, 124, 108, 864, 362, 272, 331, 20, 612, 532, 18, 487, 524, 266, 973, 642, 46, 174, 256, 37, 416, 424, 749, 532, 922, 279, 537, 268, 148, 981, 141, 334, 603, 570, 400, 4, 24, 789, 416, 475, 442, 485, 636, 151, 736, 162, 528, 52, 804, 793, 183, 734, 365, 595, 922, 187, 48, 365, 164, 47, 467, 63, 325, 250, 980, 970, 853, 716, 639, 382, 482, 241, 377, 753, 689, 108, 240, 261, 48, 478, 922, 648, 468, 33, 71, 670, 421, 727, 780, 873, 648, 416, 661, 655, 202, 745, 177, 264, 175, 284, 49, 333, 727, 668, 323, 593, 408, 693, 98, 332, 148, 634, 739, 703, 157, 359, 346, 90]
[915, 576, 254, 844, 744, 656, 149, 46, 883, 902, 636, 545, 978, 972, 572, 686, 927, 781, 463, 384, 450, 690, 322, 454, 686, 309, 56, 152, 622, 94, 579, 395, 964, 787, 886, 336, 606, 286, 880, 248, 337, 425, 590, 342, 980, 731, 541, 941, 788, 481, 753, 912, 100, 306, 414, 736, 360, 454, 52, 984, 420, 750, 839, 173, 450, 260, 189, 929, 659, 349, 664, 989, 219, 62, 566, 346, 150, 446, 838, 880, 644, 898, 662, 610, 688, 225, 519, 655, 489, 63, 492, 916, 762, 990, 273, 241, 925, 259, 138, 929, 769, 991, 981, 298, 437, 120, 627, 636, 107, 505, 80, 781, 13, 924, 901, 905, 507, 559, 48, 778, 444, 65, 312, 287, 804, 960, 573, 533, 52, 763, 188, 379, 709, 820, 334, 519, 992, 218, 550, 253, 812, 83, 620, 539, 404, 317, 966, 657, 630]

源代码如下:

defmodule M dodef read doIO.read(:stdio,:all)enddef input_to_list( input ) do# turn single string into a list of input valuesinputList = String.split(input, "\n")[head | tail] =inputList list_1_str = head [head | tail] = taillist_2_str = head [head | tail] = taillist_3_str = head #pattern = :binary.compile_pattern([" ", ", "])#IO.inspect(String.split("[1,2 3,4]", pattern))list_1_str = String.replace(list_1_str ,"[", "")list_1_str = String.replace(list_1_str ,"]", "")list_1_str = String.replace(list_1_str ," ", "")list_1 = String.split(list_1_str,[" ", ","])list_2_str = String.replace(list_2_str ,"[", "")list_2_str = String.replace(list_2_str ,"]", "")list_2_str = String.replace(list_2_str ," ", "")list_2 = String.split(list_2_str ,[" ", ","])list_3_str = String.replace(list_3_str ,"[", "")list_3_str = String.replace(list_3_str ,"]", "")list_3_str = String.replace(list_3_str ," ", "")list_3 = String.split(list_3_str ,[" ", ","])length_list = [0]length_list  = [length(list_1) | length_list ]length_list  = [length(list_2) | length_list ]length_list  = [length(list_3) | length_list ]length_max = Enum.max(length_list )IO.inspect(length_max )list_1 = list_1|> append_if(length_max > length(list_1),"0")list_2 = list_2|> append_if(length_max > length(list_2),"0")list_3 = list_3|> append_if(length_max > length(list_3),"0")#	IO.inspect(list_1)
#	IO.inspect(list_2)
#	IO.inspect(list_3)lx =[list_1 | []]lx =[list_2 | lx]lx =[list_3 | lx]lx_1 = Enum.zip(lx)l = Enum.map(lx_1 , fn n ->max_even(Tuple.to_list(n))end)IO.inspect(l)enddefp append_if(list, condition, item) doif condition, do: list ++ [item], else: list
enddef max_even(list) doevenList = 	list|> Enum.map(&String.to_integer/1)|> Enum.filter(&rem(&1, 2) == 0)if Enum.empty?(evenList ) do0else evenList |> IO.inspect|> Enum.reduce(&max/2)|> IO.inspectendenddef calculate([head | tail], acc) do#IO.inspect(acc)
#IO.inspect(tail)calculate(tail, head + acc)end# finishdef calculate( [], acc ), do: acc
end#IO.puts M.calculate(["1", "2", "3"], 0)IO.inspect M.read() |> M.input_to_list |> M.calculate(0)

如觉得代码比较难读的话,可以直接下载我们的附件,在附件中有题目说明,测试数据和源代码。

Snag_14e674c

上图是网站上的运行结果。

对一门不是非常熟悉的语言是怎么面试的 - 求职路上 - iSharkFly

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/153109.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postgresql源码(115)LLVM JIT运行逻辑分析(上)

1 JIT入口开关 总入口:jit_enabled打开 且 生成计划成本超过jit_above_cost启动JIT。 计划成本超过jit_optimize_above_cost,执行PGJIT_OPT3使用O3对IR进行优化。计划成本超过jit_inline_above_cost,执行PGJIT_INLINE。jit_expressions开关如…

Linux网络监控工具 - iftop

iftop 是一个基于 libpcap 库的网络流量监控工具。它通过监听指定网络接口上的数据包,并分析这些数据包的源地址、目标地址、源端口、目标端口、协议等信息,从而实时显示网络流量的相关统计信息。 安装 在大多数Linux发行版中,您可以使用包管…

【排序算法】冒泡排序

文章目录 一:排序算法1.1 介绍1.2 分类 二:冒泡排序2.1 基本介绍2.2 图解冒泡排序算法2.3 代码实现 三:算法性能分析3.1 时间复杂度3.2 空间复杂度 一:排序算法 1.1 介绍 排序也称排序算法(Sort Algorithm),排序是将…

upload-labs靶场通关

文章目录 Pass-01 前端检测(JS检测)1.1 原理分析1.2 实验 Pass-02 后端检测(MIME检测)2.1 原理分析2.2 实验 Pass-03 后端检测(黑名单绕过,特殊后缀名)3.1 原理分析3.2 实验 Pass-04 后端检测&a…

【力扣-每日一题】2034. 股票价格波动

class StockPrice { private:unordered_map<int,int> mp; //存储日期及其对应的价格multiset<int> st; //存储所有价格int last_day; //最新一天 public:StockPrice() {this->last_day0;}void update(int timestamp, int price) {if(mp.find(timestamp)!mp…

leetCode 1143.最长公共子序列 动态规划 + 滚动数组

1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串…

大数据—数据透析表常见使用(手把手详解)

我的个人主页&#xff1a;☆光之梦☆_C语言基础语法&#xff08;超详细&#xff09;,【java入门】语法总结-CSDN博客 创作不易&#xff0c;如果能帮到你就好 注&#xff1a;你的 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 是对博主最大的支持与鼓励喔 目录 一、创建数据透…

【微服务】七. http客户端Feign

7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题&#xf…

Vue Router的进阶

进阶 导航守卫 官方文档上面描述的会比较深奥&#xff0c;而守卫类型也比较多&#xff0c;其中包含了全局前置守卫、全局解析守卫、全局后置钩子、路由独享守卫、组件内守卫。每一种守卫的作用和用法都不相同。这会使得大家去学习的时候觉得比较困难&#xff0c;这边主要介绍…

CentOS Stream9 安装远程桌面服务 Xrdp

1. 安装 XRDP 若服务器本身没有桌面则首先需要安装本地桌面&#xff1a; yum -y groups install "GNOME Desktop" startx配置源&#xff1a; dnf install epel-release安装 xrdp dnf install xrdp 2. 配置 Xrdp Xrdp 配置文件位于 /etc/xrdp 目录中。对于常规 X…

HTTP长连接实现原理

1. HTTP长连接和短连接的定义 HTTP长连接 浏览器向服务器进行一次HTTP会话访问后&#xff0c;并不会直接关闭这个连接&#xff0c;而是会默认保持一段时间&#xff0c;那么下一次浏览器继续访问的时候就会再次利用到这个连接。在HTTP/1.1版本中&#xff0c;默认的连接都是长连…

计算机算法分析与设计(8)---图像压缩动态规划算法(含C++)代码

文章目录 一、知识概述1.1 问题描述1.2 算法思想1.3 算法设计1.4 例题分析 二、代码 一、知识概述 1.1 问题描述 1. 一幅图像的由很多个像素点构成&#xff0c;像素点越多分辨率越高&#xff0c;像素的灰度值范围为0~255&#xff0c;也就是需要8bit来存储一个像素的灰度值信息…

New Journal of Physics:不同机器学习力场特征的准确性测试

文章信息 作者&#xff1a;Ting Han1, Jie Li1, Liping Liu2, Fengyu Li1, * and Lin-Wang Wang2, * 通信单位&#xff1a;内蒙古大学物理科学与技术学院、中国科学院半导体研究所 DOI&#xff1a;10.1088/1367-2630/acf2bb 研究背景 近年来&#xff0c;基于DFT数据的机器学…

教你如何『SSH』远程连接『内网』服务器

前言 最近博主实验室要搬家&#xff0c;因为服务器只有连接内网才能使用&#xff0c;所以搬走之后就无法在公网连接使用服务器&#xff0c;确实是让人非常苦恼&#xff0c;所以本文将会主要讲解如何使用公网服务器 SSH 连接内网服务器 系统配置 内网服务器&#xff1a;Ubuntu …

川西旅游网系统-前后端分离(前台vue 后台element UI,后端servlet)

前台&#xff1a;tour_forword: 川西旅游网前端----前台 (gitee.com) 后台&#xff1a;tour_back: 川西旅游网-------后台 (gitee.com) 后端 &#xff1a;tour: 川西旅游网------后端 (gitee.com)

记录本地部署Stable-diffusion所依赖的repositories和一些插件

今天按照其他文章的步骤拉取好了https://github.com/AUTOMATIC1111/stable-diffusion-webui后&#xff0c;点击webui-user.bat后发现&#xff0c;repositories和models还得慢慢拉取&#xff0c;好吧&#xff0c;GitHub Desktop&#xff0c;启动&#xff01; BLIP: https://git…

visual studio解决bug封装dll库

1.速度最大化 O2 2.设置输出目录 配置属性/常规/输出目录 链接器/常规/输出dll文件 链接器/调试/输出程序数据库pdb文件 链接器/高级/导入库 3.输出X86 X64分别对应的dll、lib、pdb 然后修改更新说明 更新说明格式如下&#xff1a; 4.将库提交到FTP每日更新库文档下 和测试交接…

IIC总线

IIC总线原理 时序图作业 MPU6050 MPU6050是一个运动处理传感器&#xff0c;其内部集成了3轴加速度传感器 和3轴陀螺仪&#xff08;角速度传感器&#xff09;,以及一个可扩展数字运动处理器

idea compile项目正常,启动项目的时候build失败,报“找不到符号”等问题

1、首先往上找&#xff0c;看能不能找到如下报错信息 You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled. 2、这种问题属于lombok编译失败导致&#xff0c;可能原因是依赖jar包没有更新到最新版本 3、解决方案 1&#xff09…

三十三、【进阶】索引的分类

1、索引的分类 &#xff08;1&#xff09;总分类 主键索引、唯一索引、常规索引、全文索引 &#xff08;2&#xff09;InnoDB存储引擎中的索引分类 2、 索引的选取规则(InnoDB存储引擎) 如果存在主键&#xff0c;主键索引就是聚集索引&#xff1b; 如果不存在主键&#xff…