📅  最后修改于: 2023-12-03 15:29:59.970000             🧑  作者: Mango
最近我参加了Cigital公司的编码测试,以下是我的面试体验:
Cigital是安全性技术和软件测试解决方案的领导者,提供一系列可附加到现有开发流程中的服务,以确保代码安全,减少许可证违规、漏洞和攻击。Cigital公司也是软件安全领域的领导者和倡导者,在为大型企业提供安全咨询服务和专业信息中广受好评。
我的面试是在远程进行的,整个过程分为两部分:编程挑战测试和电话面试。
在某一天的早上,我收到了一封包含编程挑战测试的电子邮件。测试时限为120分钟,要求使用Java编写一个程序,该程序能够读取给定的JSON数据并根据一些规则对其进行排序。我完成了题目,并在规定时间内提交了代码。
以下是测试中的一段Java代码,它可以处理给定的JSON数据并返回排序后的数据:
// 解析JSON数据
JSONArray jsonArray = new JSONArray(jsonData);
// 构建存储数据的Map结构
Map<String, String> dataMap = new HashMap<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
dataMap.put(jsonObj.optString("id"), jsonObj.optString("name"));
}
// 按规则对Map结构进行排序
List<Map.Entry<String, String>> dataList = new ArrayList<>(dataMap.entrySet());
Collections.sort(dataList, (o1, o2) -> {
if (o1.getValue().equals(o2.getValue())) {
return o1.getKey().compareTo(o2.getKey());
}
return o1.getValue().compareTo(o2.getValue());
});
// 构造排好序后的JSON数据
JSONArray sortedJsonArray = new JSONArray();
for (Map.Entry<String, String> entry : dataList) {
JSONObject jsonObj = new JSONObject();
jsonObj.put("id", entry.getKey());
jsonObj.put("name", entry.getValue());
sortedJsonArray.put(jsonObj);
}
String sortedJsonData = sortedJsonArray.toString();
约两天后,我收到了一通约15分钟的电话面试。面试官首先介绍了Cigital公司的业务领域和经验,然后询问我的相关经验和技能。我们还讨论了具体的编程挑战测试和我的解决方案,我分享了我的思考和实现方式并回答了面试官的问题。
总的来说,我的Cigital面试体验非常愉快。编程挑战测试对我的编程技能提出了挑战,电话面试让我了解了Cigital公司的相关业务和文化。我认为与Cigital公司合作将是一个非常有意义和充实的工作经历。