面对一工科男来应聘算法工程师,却不知道int是几个字节,一个字节有几位,这是一种怎样的体验?

伝儱


看来现在的程序员功底都不够啊!也许学习c/c++的人越来越少了吧。

其实,c++的标准上并没有对int类型的字节数做硬性规定,只是说int至少应该是16位的。其它的由编译器根据软硬件的条件自行定义。这也是为了移植方便,让程序不太依赖硬件条件。

对于特殊的情况,很多编译器也支持直接指定int的长度,比如int64,但是每家编译器写法都不尽相同,所以可移植性就差很多了。

至于其它语言,一般都是位数固定了,不像c++这样的如此奇葩/灵活。


科学中医郭毅勃


作为一个程序员经常面试一些技术人员,现在很多技术人员基本上由于工作年限关系,经常性的连一些基本的编程基础都拿捏不住了,本来基础就不是很牢固加上工作了在一个固定的岗位上干着一个涉猎范围不是很广的,导致只能在一个岗位上做点事情,如果这个岗位的市场竞争力没问题,也不会发生什么事情,如果换个工作或者岗位竞争力下降一些弊端就出来了,真实的见过一些程序员见到有笔试的公司直接题目也不做招呼都不打直接就走人了,不能讲这部分人找不到工作起码来讲,市场竞争力会受影响。

程序员这个职位本质上讲门槛不是特别高,主要是开始前几年需要付出的比较多,很多程序员一旦有了写程序的感觉,就开始自我放松了,因为写代码就是这么回事,拿到任务之后直接在网上找点代码修改下就能完成任务,软件技术的更新速度非常迅速,不可能一直吃老本所以有些工作了四五年的程序员突然之间觉得自己落伍了不行了,主要是安于现状没有改变的勇气,技术更新速度非常迅速,虽然短时间内无法改变很多但日积月累慢慢形成质变,如果新技术更进及时那么就容易跟上,隔上几年再去学习就觉得自己落伍太多了。

在职的程序员如何提升自己的技能?

1.不停夯实编程语言基础

很多人觉得已经找到工作了,能把工作做好就够了,没有必要继续像刚开始学习编程那样诚惶诚恐的学习了,结果一扔就是几年的时间,基础学习透彻能够极大的拓展自己的技术自信度,所有的高深的东西都是最基础的东西组合起来的,只要技术高超的程序员基本功一定非常扎实而且喜欢回顾以前的编程基本功,不至于在笔试的时候发现很基础的东西都回答不上了,不能总是术业有专攻来搪塞自己,基本功的学习是必备的基本功。

2.不断跟进新技术

程序员的编程技能需要跟上时代发展的潮流,只是闭塞在一个很小的范围早晚会出问题,无论什么职位都不能一劳永逸,都需要有时俱进,后续的技术革命将越来越快速,淘汰的速度也会越来越快。

3.提升解决问题能力

可能非常简单的一句话,但落实到真正的解决能力上,就不是一两句的话是事情上,在项目中就是开发经验,有了经验遇到问题就不会慌张,解决起来就会有对策,具体到实际中可能是基本的语法,也有可能是架构能力,或者客户提出的一个非常变态的需求,这些都是解决能力的一个体现,综合能力,这种直接对应着能够拿多少薪水,很多企业招聘技术人员就是通过项目经验来验证这种能力。

所以一个程序员在任何时候都不要放松对自己的要求,不停的挑战自我夯实基本功,也就不至于闹出这种笑话了。

希望能帮到你。


大学生编程指南


一般而言一个字节八位,无符号正整数范围0-255.两个字节0-65535。一般int是两个字节,也有longint,不同开发语言可能略有差异,不过基本相同。

具体编程过程中,许多程序员不见得需要知道int是多少位,因为现在的硬件配置好,无需计较一个变量的占用空间。如果是上世纪的程序员就需要考虑,如果计数范围小,还要考虑一个字节byte。以前为了节约空间和加快速度,涉及到数学运算时需要用位操作,如左移和右移。因此在C语言中经常要嵌入汇编来达到最佳效果,当然现在这样做是脱裤子放屁了,比如目前比较流行的各种脚本语言,哪里还需要知道多少字节,我见过许多年轻人大学里没有学过基础知识,学习编程都是一开始就学html5或python,而以前大学学的是数据结构和计算机原理、编译系统等基础课程,但是以前的老程序员不见得就干的过年轻人,虽然基础好但时代进步了导致老程序员知识老化,现在新的开发工具层出不穷,你用C编一个月的程序,别人三天就能搞定,这就是效率,现在流行的是效率,快捷。因此对于当前中国这个时代很多人恍如隔世,现在程序员根本不需要上大学,有中专文凭就够了,做个网站,搞个UI轻松简单再加上懂点ug画个三维动画什么的,不得不服啊。


飞翼点通


算法工程师目前的分工比较细,有不少算法工程师并不做算法实现,所以在编程语言的使用方面也可能存在不熟悉的情况。但是现在不少程序员对基础知识的掌握也没有以前那么扎实,这是一个比较明显的现象。

我经常作为面试官参加一些企业的程序员面试工作,在面试的过程中我一般会问一些比较基础的问题,以便于了解程序员的基础知识结构。像int是几个字节的问题我也问过,大部分程序员是能够回答上来的。类似的问题还有计算机端口号的范围、网络寻址方式、TCP协议与UDP协议的区别、接口的作用、XOR运算的规则等等问题,一般这些问题都是问初级程序员比较多,对于中高级程序员则一般问一些具体的解决方案。

对于一些简单的基础问题的回答能反映出程序员的基础知识结构,按照历史经验来看,对于一些非计算机专业的程序员来说可能在回答这些问题的时候会显得吃力,因为目前的很多程序设计语言都比较简单,在很多实验中也练习不到这些基础知识,但是这些基础知识对程序员来说还是比较重要的。

很多情况下,即使没有回答上来一些基础性的问题也不要气馁,毕竟现在的开发环境与早些年有很大的不同,程序设计更多的关注于模块化、扩展性等问题。但是基础知识的掌握对于程序员来说还有很有必要的,尤其是一些常识性问题。

我使用Java、C和Python的时间比较长,也在头条上陆续写了一些关于程序设计、大数据方面的文章,对这些内容感兴趣的朋友可以关注我,相信一定会有所收获。

谢谢!


IT人刘俊明


通常来讲int俗称字,一般为4个字节,也有1个字节,或2个字节。这取决于平台CPU的指令宽度。跨平台的代码,会有使用#define或typedef重新命名,比如unsigned int命名为INT32U。



对于算法工程师,我认为应该了解此题。理由很简单,一是算法必须涉及数据,那么数值范围就必须明确;二是算法必须考虑空间,比如存储大小和运行大小,字节对齐,读写访问的边界问题。



如果算法工程师对此不甚了解,那很可能会出大事,比如算法中一个int变量取值大于2个字节所表示的范围,那么该算法在32位系统中没有事,但放到16位系统中就可能出错,今时今日依然有很多系统最大只支持16位呢,尤其是在单片机系统中,8位更常见。顺便说一句,我还用过只支持16位的,不支持8位或32位。即没有Byte Mask功能。

说到这里,可能大家还遇到过,32位的系统支持64位字,int64,long long类型,怎么回事?通常使用一个结构体两个32位字的成员变量来实现,字节访问上就用两个int 32的周期去读写一个数据。



总之,跨平台算法,要具体情况具体分析。谢谢大家。


嵌入式软件少帅


还是要看贵司对算法工程师的招聘要求,包括对他们的岗位描述。现在算法以及数据分析所用的工具比较多,对于编译器相关的这些基本常识,因为太基本所以不一定会。这种体验,就像你每天坐地铁上下班,也未必知道自己乘的这几号线的地铁各有多少节车厢一样。

当然,如果要求就是算法工程师必须从嵌入式代码开发起,那int有几个字节、一个字节有几位是必须知道的。


心理咨询师Mango


我是个密码算法工程师,真的答不出来,刚去问了下我手下干活的,幸亏他们会😹😹😹


云焕家的猫


我本科毕业答辩的时候,有人论文里出现了“TTL”,教授问他TTL是什么,那哥们不知道,把教授气的够呛,让他搬个凳子坐门后边想。


手机用户73945153700


算法工程师为什么要懂int有多少字节?又不是做数据库的


蜂鸟7625


那你倒是说说int有多少个字节?

int这种东西是编译器厂家自己定的,想多少个字节就可以是多少个字节,问出这样的问题你也不觉得自己low?

不知道提问的人用过c语言没有,你知不知道为什么c语言会有stdint这种东西?就是因为按照int的位数本来就是不定的。


分享到:


相關文章: