java编程题

  实现一个字符串数字转人民币的小功能

  入参:一个字符串,范围是0.00~999999.99,最多两位小数

  出参:对应的人民币大写或者验证不合法

  例子1:

  input:12345.67

  output:壹万贰仟叁佰肆拾伍元陆角柒分

  例子2:

  input:1000000

  output:输入值超出范围

  例子3

  input:133a055

  output:输入的值不是数字

说明一下:当时我的思路是:

    (1)根据小数点分割,然后获取到小数点左边的整数位,和右边的小数位。

    (2)然后各自根据空格分割,获取到整数位数组和小数位数组。

    (3)整数位数组进行从右到左的遍历,这样可以拼接单位(如:元、拾、佰..)

    (4)小数位从左到右遍历,好处如(3)

    (5)在3、4遍历过程中需要把对应的数字转换成大写中文

遗憾:当时整个思路是这样的,但是手写代码还是不如自己用电脑方便,易改。笔试过程中因为自己写的  例子2、例子3 不符规则的代码 写多了,把位置都占了,不得已说了一下我的思路。不过当时在第三步写的有一点问题。下面有我错误想法的代码。不过我认为整个的思路是没问题的。后来回家后自己电脑敲了一波(下面不符规则的代码就不写了)。

 1   public static String transfer(String num){
 2          num="12345.67";
 3
 4         String[] chinese={"0,零","1,壹","2,贰","3,叁","4,肆","5,伍","6,陆","7,柒","8,捌","9,玖"};
 5         //此处根据小数点分割
 6         String[] str1= num.split("\\.");
 7         //这里是根据空格拆分的整数数组
 8         String[] str2= str1[0].split("");
 9         //这里是根据空格拆分的小数数组
10         String[] str3= str1[1].split("");
11         //这里的c 是整数位用来累加遍历次数 以获取到 单位的(元,拾...)
12         //
13         int c=0;
14         StringBuffer sb;
15         StringBuffer newsb=new StringBuffer();
16         for (int i = str2.length-1; i >=0 ; i--) {
17             sb=new StringBuffer();
18             //这里是获取int数字转换成中文数字
19             for (int y=0;y<chinese.length;y++){
20                 System.out.println(str2[i]);
21                 if(chinese[y].startsWith(str2[i])){
22                     System.out.println(chinese[y]);
23                     sb.append(chinese[y].split(",")[1]);
24                     break;
25                 }
26             }
27
28             //这里当时的错误想法是这里,switch里面的是(str2[i]).
29             // 笔试后面试官说这里有问题,但是后来已经面试完了,我才想起怎么去解决这个问题。大写的尴尬。。。
30             switch (c){
31                 case 0: sb.append("元");break;
32                 case 1: sb.append("拾");break;
33                 case 2: sb.append("佰");break;
34                 case 3: sb.append("仟");break;
35                 case 4: sb.append("万");break;
36 //                case 5: sb.append("拾万");break;
37 //                case 6: sb.append("百万");break;
38             }
39             //整数数组位 替换成数字+单位
40             str2[i]=sb.toString();
41             c++;
42         }
43         //这里需要把整数数组从左到右 进行拼接显示
44         for (int i = 0; i < str2.length; i++) {
45             newsb.append(str2[i]);
46         }
47
48         //小数位从左到右拼接
49         for (int i =0; i < str3.length ; i++) {
50             sb=new StringBuffer();
51             for (int y=0;y<chinese.length;y++){
52                 if(chinese[y].startsWith(str3[i])){
53                     System.out.println(chinese[y]);
54                     sb.append(chinese[y].split(",")[1]);
55                     break;
56                 }
57             }
58             switch (i){
59                 case 0: sb.append("角") ;break;
60                 case 1: sb.append("分");break;
61             }
62             //这里单纯是为了查看 其实可以省略此步骤
63             str3[i]=sb.toString();
64             newsb.append(str3[i]);
65         }
66
67         System.out.println(newsb.toString());
68         return newsb.toString();
69     }

最后说一下整个面试:

  整个面试感觉说了很多,但是也有一部分没回答上来。问的东西很简单。之前看了很多jvm底层的东西,垃圾回收和垃圾收集器等,集合的底层和扩容等。

  感觉和第一个面试官唠了四五十分钟把。但是到了第二个面试官,上了就问我不是计算机专业的?我本身是土木工程的(本科),我实话实说。后来的唠嗑感觉面试官都快睡着了,感觉我说的东西他也没听多少。第二天 大搜车发来了邮件给我婉拒了。

  整个面试分析下来,两点:

  1、自己的有点知识掌握不牢靠、不全面、不深入。但是认为我跟计算机专业的毕业相同时间的人比 ,我不输很多。

  2、感觉自己输在了专业上,假如计算机专业毕业是加分项,我这不是的 不是零分而是负数。但是不能一直失落,要越挫越勇,再沉淀下,之后自己要用更多时间学习,来弥补专业问题。

   

转载于:https://www.cnblogs.com/liran123/p/9381393.html

记录去大搜车的一道笔试题相关推荐

  1. 大搜车java_记录去大搜车的一道笔试题

    java编程题 实现一个字符串数字转人民币的小功能 入参:一个字符串,范围是0.00~999999.99,最多两位小数 出参:对应的人民币大写或者验证不合法 例子1: input:12345.67 o ...

  2. 大搜车孙信宇:一个好的团队应该去中心化

    汽车电商之路障碍重重,哀嚎遍野,第一批电商平台几乎全军覆灭,在这样的大环境下,大搜车却"异军突起",不到一年时间,公开融资金额达 9.13 亿美元,从成立至今先后获得六轮融资,频获 ...

  3. 好文:「大搜车」凭什么获得阿里如此青睐?

    2019独角兽企业重金招聘Python工程师标准>>> 在车联网之后,阿里巴巴又加紧了汽车流通领域的布局. 「新商业NEO100」是36氪品牌全面向新商业升级而制作的一个特别栏目. ...

  4. 关于大搜车「无线开发中心」团队

    更多文章,参见大搜车技术博客:blog.souche.com/ 大搜车无线开发中心持续招聘中,前端,Nodejs,android 均有 HC,简历直接发到:sunxinyu@souche.com 我们 ...

  5. java orm设计_大搜车orm框架设计思路

    orm基本概念 ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和 ...

  6. HBase在大搜车金融业务中的应用实践

    摘要: 2017云栖大会HBase专场,大搜车高级数据架构师申玉宝带来HBase在大搜车金融业务中的应用实践.本文主要从数据大屏开始谈起,进而分享了GPS风控实践,包括架构.聚集分析等,最后还分享了流 ...

  7. 自顾不暇的大搜车能为吉利汽车做些什么?

    文 | 知识流 5月18日,大搜车与吉利汽车宣布达成战略合作,共建国内首个"真直销 一口价"的数字化汽车直销新零售网络,双方合作的首款直销车型--缤越PRO 轻骑士 BSG版在大搜 ...

  8. 大搜车面向复杂业务场景的研发运维体系治理实践

    图:大搜车基础设施部负责人李同刚 2021年12月10日,在云上架构与运维峰会上,大搜车集团基础设施部负责人李同刚分享了大搜车在研发运维体系治理的一些实践.以下是他的演讲实录: 一.业务介绍 1.汽车 ...

  9. 大搜车Java面试 2017.10.30

    大搜车Java面试 2017.10.30 杭州余杭区办公环境一般,两层一栋的办公楼,但是开发工位是连成一片的没有卡位一说.比较拥挤. 面试两轮技术面,总共耗时3小时,各种等待就有1小时,最后人事说三天 ...

最新文章

  1. SAP IDoc E1EDP04 Z8 数据错误之对策
  2. 使用Python中的Turtle库绘制简单的图形
  3. boost::sort模块实现支持不同分布的随机数生成器的测试程序
  4. 机器学习基础-神经网络-10
  5. 在IE环境下用javascript触发ABAP event
  6. 浅释一下,为什么要使用接口?
  7. 一样入职的应届生工资不一样_为什么每月工资一样,但扣的个税不一样?
  8. 5G(3)---5G NR协议栈及功能2 - MAC RLC PDCP SDAP
  9. 汕尾php培训,系统发生错误
  10. 高斯分布函数c语言编程,c语言 写高斯分布函数
  11. JsonView 使用方法
  12. wifi连接过程抓包
  13. 我为什么要学习 Python(2020版)
  14. jsonrpc4j android,jsonrpc-4j代码解析
  15. 在线生成透明ICO图标
  16. 苹果手机怎么定位安卓手机_苹果AirPods搭配安卓手机怎么样?那是相当好
  17. 电脑壁纸尺寸比例_怎么设置桌面壁纸尺寸比例
  18. 海南计算机管理科员工资,海南公务员级别工资一览表
  19. SpringBoot引入Dubbo问题解析
  20. android高仿微信的图片查看

热门文章

  1. 防止程序重复执行的单元
  2. 传智播客C/C++各种开发环境搭建视频工具文档免费教程
  3. 陶哲轩实分析 习题 13.5.6
  4. 「iOS 面试之道」勘误(二)
  5. 小程序button引导用户授权
  6. golang 编译后文件过大问题处理
  7. 移动端网页使用flexible.js加入百度联盟广告样式不一致问题解决
  8. 如何解决经常出现Windows数据执行保护的提示?
  9. [USACO12MAR]拖拉机
  10. 用原生 js jquery 实现知乎收起答案功能